【发布时间】:2013-12-24 20:18:30
【问题描述】:
我有这个模型:
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”。
但我认为问题不在于这里。我不知道。
这里有什么问题?
【问题讨论】:
标签: c# asp.net-mvc-4 relational-database entity-relationship