包含相同对象列表的对象的实体框架映射

时间:2013-05-09 08:25:38

标签: c# sql-server entity-framework entity-framework-4 ado.net

目前在我的代码中我正在做这样的事情

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

科目可以有许多先决条件(也是科目),科目可以是许多科目的先决条件。

我们最初使用类型化数据集将数据保存到数据库,我们的表格如下所示:

DatabaseDiagram

我们现在想要从使用类型化数据集迁移到实体框架,但我不确定如何创建映射。从数据库生成EF并不真正起作用,因为它只删除每个表并使用外键作为导航属性。据我所知,EF不需要另一个实体来建立多对多的关系。如果有人可以提供帮助,那就太好了!干杯!

1 个答案:

答案 0 :(得分: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");
            });
}