如果表的列名与表名相同,则EDMX Generator将列名称后缀为“1”。例如:在下面的样本中将测试更改为Test1。
SQL Server表定义:
CREATE TABLE [dbo]。[测试]( [测试] 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生成器让它们独自存在。
我们如何解决这个问题?我们无法控制数据库架构。