2013-05-09 121 views
2

的包含對象名單的實體框架映射目前在我的代碼,我做這樣的事情相同的對象

public class Subject 
{ 
    private List<Subject> _prerequisites; 
} 

一個主題可以有很多先決條件(也是主題),並受可能的先決條件多學科。

我們最初使用類型化數據集,以將數據保存到數據庫中,我們的表是這樣的:

DatabaseDiagram

我們現在要使用類型化數據集,以實體框架遷移,但我不確定如何創建映射。從數據庫生成EF實際上並不工作,因爲它只是刪除每個表並將外鍵用作導航屬性。從我的理解來看,EF不需要另一個實體來建立多對多的關係。如果任何人都可以幫助,那會很棒!乾杯!

回答

2

想通了。需要在繼承DbContext的類中的OnModelCreating方法中覆蓋默認模型構建。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Subject>(). 
     HasMany(m => m.Prerequisites). 
     WithMany() 
     .Map(m => 
      { 
       m.ToTable("SubjectPrerequisite"); 
       m.MapLeftKey("SubjectId"); 
       m.MapRightKey("PrerequisiteId"); 
      }); 
}