如何阻止EDMX生成器更改列名称

时间:2012-10-04 16:57:39

标签: entity-framework dbcontext

如果表的列名与表名相同,则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生成器让它们独自存在。

我们如何解决这个问题?我们无法控制数据库架构。

1 个答案:

答案 0 :(得分:1)

我们无法改变这种行为。 EDMX生成器更改列名,因为C#编译器不允许您拥有具有相同名称成员的类。见MSDN Forum