我在EF6中创建了一个包含多个表的模型,其中一个表是 ContentGrouptable ,具有以下结构:
public partial class ContentGroup
{
public ContentGroup()
{
this.Contents = new HashSet<Content>();
this.ContentGroups = new HashSet<ContentGroup>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Visible { get; set; }
public long Ordering { get; set; }
public string CommentState { get; set; }
public int ContentGroupId { get; set; }
public virtual ICollection<Content> Contents { get; set; }
public virtual ICollection<ContentGroup> ContentGroups { get; set; }
public virtual ContentGroup ContentGroup1 { get; set; }
}
正如您所看到的,此表格与whit本身有关系。 Id列中的一对多。在此表中,我们有一个 FK-ContentGroupId 引用自身( ContentGroup)。所以我使用MVC4(ASP)为这个实体创建一个视图,所以当我想在我的表中插入一个值时,我得到了这个错误:
"Unable to determine a valid ordering for dependent operations. Dependencies may
exist due to foreign key constraints, model requirements, or store-generated
values."
那我该怎么办呢?因为FK?
祝你好运
答案 0 :(得分:0)
问题是你有一个不可为空的ContentGroupId
。这意味着当您插入ContentGroup
时,您还必须设置其父ContentGroup
。但这是一个鸡和蛋的问题(或者:没有&#34;有效的订购&#34;)。您无法同时插入父母和子女,它始终是顺序操作。然后,必须始终有一个所有父母的母亲&#34;,而不是父母本身。
所以,让ContentGroupId
可以为空并映射关联,如下所示:
modelBuilder.Entity<ContentGroup>()
.HasOptional(cg => cg.ContentGroup1)
.WithMany(cg => cg.ContentGroups)
.HasForeignKey(cg => cg.ContentGroupId);