0

テーブルにテーブル名と同じ列名がある場合、EDMX ジェネレーターは列名の末尾に「1」を付けます。例: 以下のサンプルで Test を Test1 に変更します。

SQL Server テーブルの定義:

CREATE TABLE [dbo].[Test]( [Test] nchar NOT NULL, [ColumnsTwo] nchar NULL,

作成された EF モデル:

     <EntitySetMapping Name="Test">
        <EntityTypeMapping TypeName="AdventureWorksModel.Test">
          <MappingFragment StoreEntitySet="Test">
            <ScalarProperty Name="ColumnsTwo" ColumnName="ColumnsTwo" />
            <ScalarProperty Name="Test1" ColumnName="Test" />
          </MappingFragment>
        </EntityTypeMapping>
      </EntitySetMapping>
    </EntityContainerMapping>

これにより、SqlQueries は「データ リーダーは、指定された 'AdventureWorksModel.Test' と互換性がありません。型のメンバー 'Test1' には、データ リーダーに同じ名前の対応する列がありません。」というエラーがスローされます。

DbContext ジェネレーターが列名を変更するのはなぜですか? ObjectContext ジェネレーターはそれらをそのままにしました。

どうすればこれを修正できますか? DB スキーマを制御することはできません。

4

1 に答える 1

1

この動作を変更することはできません。EDMX ジェネレーターは列名を変更します。これは、C# コンパイラーが同じ名前のメンバーを持つクラスを持つことを許可しないためです。MSDN フォーラムを参照してください

于 2012-10-11T12:57:30.757 に答える