0

在 Table-Per-Hierarchy 模式中,以 MM 关系表示两个子类:

public class Project {

    public int Id {get; set;}
    ...
    protected Project(){}
}

public class Subproject1 : Project {

    ...
    public virtual IList<Subproject2> LinkedSubprojects2 {get; set;}
}

public class Subproject2 : Project {

    ...
    public virtual IList<Subproject1> LinkedSubprojects1 {get; set;}
}

每隔一段时间,我就会收到异常“支持上下文的模型已经改变......”,即使我没有对我的模型进行任何更改。

我查看了建议的迁移,它想要做的是删除表Subproject1Subproject2s并替换它with Subproject2Subproject1s

我以前见过它这样做一次,但后来我正在更改模型,所以我很少考虑它。但它似乎有可能成为一个主要问题,如果它偶尔这样做的话,它本身!

谢谢你的帮助!

4

1 回答 1

0

终于找到了答案:

modelBuilder.Entity<Subproject1>()
    .HasMany(p => p.LinkedSubprojects2)
    .WithMany(p => p.LinkedSubprojects1)
    .Map(r =>
        {
            r.MapLeftKey("Subproject1_Id");
            r.MapRightKey("Subproject2_Id");
            r.ToTable("Subproject1Subproject2s");
        });
于 2014-03-19T20:42:23.323 回答