2011-04-13 53 views
1

如何覆蓋EF4中外鍵列的默認約定以指定不同的列名稱?EF4 CTP5 - 多對一列重命名

例如,我有一個名爲Parent的屬性的實體,它引用了另一個相同類型的屬性。

EF4嘗試通過查找名爲EntityId的外鍵來解析關係,但在我的數據庫模式中它是Entity_Id。我如何告知EF FK列名不是EntityId?

我已經試過如下:

modelBuilder.Entity<SomeEntity>() 
    .HasOptional(m => m.Parent) 
    .WithMany() 
    .IsIndependent() 
    .Map(m => m.MapKey(k => k.Id, "Entity_Id"))); 

但我得到一個異常說:Sequence contains more than one matching element

對此有何幫助?

謝謝!

回答

2

首先:升級到EF 4.1 RTW。 CTP 5已過時,並且可能包含許多現在已修復的錯誤。

如果你已經完成了升級以下應該工作:

modelBuilder.Entity<SomeEntity>() 
    .HasOptional(m => m.Parent) 
    .WithMany() 
    .Map(c => c.MapKey("Entity_Id"));