テーブルにテーブル名と同じ列名がある場合、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 スキーマを制御することはできません。