我读了很多程序员的帖子,其中涉及到无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能会存在依赖关系- 在实体框架中使用自引用关系时出现异常。
我正在努力建立亲子关系:
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 不插入父 ID 为空的类别。数据库允许ParentId外键为空。
您能告诉我该怎么做吗?
您必须定义ParentId
在类别类中设置为可为空,以将其用作某个对象的外键属性optional关系:
public int? ParentId { get; set; }
An int
属性不能取值null
因此不能代表NULL
作为数据库列中的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)