2013-03-11 116 views
2

先在現有數據庫中使用代碼。我有兩個表具有不同的主鍵和外鍵名稱。例如實體框架代碼首先將Fluent映射用於不同表格和實體的不同列鍵名稱

public class Person 
{ 
    public int PersonID {get; set;} 
    public virtual Sale {get; set;} 
    public ICollection<Order> Orders {get; set;} 
    //props 
} 

public class Sale 
{ 
    public int saleId {get; set;} 
    public int PersID {get; set;} 
    //props 
} 
public class Oder 
{ 
    public int OrderId {get; set;} 
    public int pID {get set;} 
} 

假設表人的PK是是PersonID,爲了是PID和FK在售PersID(所以對ID的命名規則是從桌到桌不同)

我如何在考慮不同的列ID名稱的同時使用流利來映射實體?

回答

1

因此,EF已經提取PersonID作爲您的人員(People?)表的主鍵。當然,你總是可以這樣寫:

modelBuilder.Entity<Person>().HasKey(p => p.PersonID); 

然後你想描述Person和Sale之間的關係。我會假設你Sale類有所謂的「人」 Person類型的導航屬性:

modelBuilder.Entity<Sale>().HasRequired(s => s.Person) 
          .WithMany() 
          .HasForeignKey(s => s.PersID); 

的「HasForeignKey」的方法讓您指定定義外鍵值對你的類的屬性。

不要忘記,完全省略外鍵屬性也是可以的。您可能想要消除PersID屬性並告知EF數據庫列的名稱爲「PersID」,如下所示:

modelBuilder.Entity<Sale>().HasRequired(s => s.Person) 
          .WithMany() 
          .Map(m => m.MapKey("PersID")); 
+0

謝謝Matt。其實沒有從銷售到人的導航財產。但只是從人到銷售。那麼映射將如何改變? – 2013-03-11 13:22:42

+0

@Amadou我不知道如何定義關係,如果你沒有導航屬性。這不是我見過的。 – 2013-03-11 19:27:35

+0

我明白馬特。謝謝 – 2013-03-18 16:37:12

相關問題