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 生成器不理会它们。

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

4

1 回答 1

1

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

于 2012-10-11T12:57:30.757 回答