2012-10-04 91 views
0

如果一个表的列名称与表名称相同,则EDMX生成器将列名称后缀为“1”。例如:在下面的示例中将Test更改为Test1。如何停止更改列名称的EDMX生成器

SQL Server表中定义:

CREATE创建的表[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生成器使它们独立。

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

+0

这应该与DbContext生成器无关。它在EDMX发生器内部。我想前者的行为是在VS2010中,而新的行为在VS2012中,不是吗? –

+0

可能。我会检查我的办公室。它为什么这样做?我该如何解决这个问题? –

+0

我也发生在VS 2010上。也许EDMX生成器总是在列名称=表名称时更改列名称。有人知道解决方法吗? –

回答

0

我们不能改变这种行为。 EDMX生成器更改列名称,因为C#编译器不会让您拥有具有相同名称的成员的类。请参阅MSDN Forum

相关问题