我有这个模型:
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
保存记录时,我看到此错误:
无法确定从属操作的有效顺序。 由于外键约束、模型,可能存在依赖关系 要求或存储生成的值。
请注意,由于以下错误,数据库中的关系不存在:
"内容类型"表 - 无法创建关系"FK_ContentType_ContentType"。 更改表语句与外键同一表冲突 约束"FK_ContentType_ContentType"。冲突发生在 数据库"CMS",表"dbo。内容类型",列"内容类型 ID"。
但我不认为问题来自这里。我不知道。
这里出了什么问题?
似乎这两个错误都是由表中不正确的数据引起的 ContentType
.
"内容类型"表 - 无法创建关系 "FK_ContentType_ContentType"。更改表语句冲突 使用外键相同表约束 "FK_ContentType_ContentType"。冲突发生在数据库"CMS"中, 表"dbo。内容类型",列"内容类型 ID"。
这指向字段中ParentId
值不正确。验证此字段中的值是否确实ContentTypeId
其他记录中的值正确。
无法确定从属操作的有效顺序。 由于外键约束、模型,可能存在依赖关系 要求或存储生成的值。
此错误指向循环依赖项。验证数据中没有周期。