gpt4 book ai didi

entity-framework - Entity Framework 中的自引用/父子关系

转载 作者:行者123 更新时间:2023-12-03 10:01:03 24 4
gpt4 key购买 nike

我读了很多程序员的帖子,遇到了 无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖性 - 在 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 不插入带有 null parentId 的 Category。数据库允许 ParentId 外键为空。

你能告诉我怎么做吗?

最佳答案

您必须定义 ParentId在类别类中作为可为空将其用作可选关系的外键属性:

public int? ParentId { get; set; }

int属性不能取值 null因此不能代表 NULL作为数据库列中的值。

关于entity-framework - Entity Framework 中的自引用/父子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com