自引用实体引发无法确定依赖操作的有效排序

时间:2016-07-05 06:43:50

标签: c# entity-framework

尝试创建一个具有自引用的注释,因为注释可以由许多注释共享,具有1-n关系。我将外键添加到SharedNoteID属性并将其设为nullable。无论如何我还是得到了

  

"无法确定相关操作的有效排序"

当我尝试保存Note时,即使是第一个(因此将SharedNoteID保存为null)。我首先使用Entity-framework 6.1.3代码。有什么问题?

这是我的实体

public class Note
{
    public Note()
    {
        SharingNotes = new List<Note>();
    }

    public long ID { get; set; }

    //other properties

    public long? SharedNoteID { get; set; }

    [ForeignKey("SharedNoteID")]
    public Note SharedNote { get; set; }

    public virtual ICollection<Note> SharingNotes { get; set; }
}

这是我的DBContext

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
        base.OnModelCreating(modelBuilder);
    }

1 个答案:

答案 0 :(得分:0)

我发现了问题。它不是在EF代码中,而是在Controller(asp.net 5)中。这是错误:

public ViewResult Create(long sharedNote=0)
{
    Note note = new Note();
    note.SharedNoteID = sharedNote;
    return View(note);
}

我不得不改为

public ViewResult Create(long? sharedNote)
{
    Note note = new Note();
    note.SharedNoteID = sharedNote;
    return View(note);
}