我有这个型号:
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'。
但我认为问题不在这里。我不知道。
这里有什么不对?
答案 0 :(得分:3)
似乎这两个错误都是由表ContentType
中的错误数据引起的。
'ContentType'表 - 无法创建关系 'FK_ContentType_ContentType'。 ALTER TABLE语句发生冲突 使用FOREIGN KEY SAME TABLE约束 “FK_ContentType_ContentType”。冲突发生在数据库“CMS”中, 表“dbo.ContentType”,列'ContentTypeId'。
这表示ParentId
字段中的值不正确。验证此字段中的值在其他记录中实际上是否正确ContentTypeId
。
无法确定相关操作的有效排序。 由于外键约束,模型可能存在依赖关系 要求或商店生成的值。
此错误指向循环依赖项。确认您的数据中没有周期。