我阅读了很多程序员的帖子,他们在使用Entity Framework中的自引用关系时遇到了无法确定依赖操作的有效排序。由于外键约束、模型要求或存储生成的值可能存在依赖关系-异常。
我正在尝试使父子关系正常工作:
public class Category {
public int CategoryId { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public Category Parent { get; set; }
public List<Category> Children { get; set; }
}
这是我使用的配置(Fluent API):
Property(c => c.ParentId).IsOptional();
HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId);
//HasOptional(c => c.Parent).WithMany(c => c.Children).HasForeignKey(c => c.ParentId);
当我尝试像这样保存新类别时,HasMany() 和 HasOptional() 配置都会导致 "无法确定依赖操作的有效排序..." 异常:
context.Categories.Add(new Category { Name = "test" });
我不明白为什么EF不会插入具有空的parentId的Category。数据库允许ParentId外键为空。
您能告诉我如何做吗?