2013-05-09 78 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"); 
      }); 
}