2012-10-04 77 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

相關問題