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

时间:2013-12-24 11:44:24

标签: c# asp.net-mvc-4 relational-database entity-relationship

我有这个型号:

public class ContentType
{
    public int ContentTypeId{get;set;}
    public string Name{get;set;}
    public Lang Lang{get;set;}
    public bool IsPublished{get;set;}
    public int? ParentId { get; set; }
    public int UserId { get; set; }
    public virtual User User { get; set; }
    public virtual ContentType Parent { get; set; }
    public virtual List<ContentType> Children { get; set; }
}

它与自身有一对多的关系。

在上下文中我有这个:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ContentType>().HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId);
    base.OnModelCreating(modelBuilder);
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();    
}

但是当我使用ParentId=0保存记录时,我看到了这个错误:

  

无法确定相关操作的有效排序。   由于外键约束,模型可能存在依赖关系   要求或商店生成的值。

请注意,由于以下错误,数据库中的关系不存在:

  

'ContentType'表    - 无法创建关系'FK_ContentType_ContentType'。 ALTER TABLE语句与FOREIGN KEY SAME TABLE冲突   约束“FK_ContentType_ContentType”。冲突发生在   数据库“CMS”,表“dbo.ContentType”,列'ContentTypeId'。

但我认为问题不在这里。我不知道。

这里有什么不对?

1 个答案:

答案 0 :(得分:3)

似乎这两个错误都是由表ContentType中的错误数据引起的。

  

'ContentType'表 - 无法创建关系   'FK_ContentType_ContentType'。 ALTER TABLE语句发生冲突   使用FOREIGN KEY SAME TABLE约束   “FK_ContentType_ContentType”。冲突发生在数据库“CMS”中,   表“dbo.ContentType”,列'ContentTypeId'。

这表示ParentId字段中的值不正确。验证此字段中的值在其他记录中实际上是否正确ContentTypeId

  

无法确定相关操作的有效排序。   由于外键约束,模型可能存在依赖关系   要求或商店生成的值。

此错误指向循环依赖项。确认您的数据中没有周期。