尝试创建一个具有自引用的注释,因为注释可以由许多注释共享,具有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);
}
答案 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);
}