gpt4 book ai didi

c# - Entity Framework 中的多个自引用失败并出现 "principal end"错误

转载 作者:太空狗 更新时间:2023-10-30 01:33:06 24 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 6 和 Code First 执行以下操作:

public class Step
{
public int Id { get; set; }
public Step NextStepSuccess { get; set; }
public Step NextStepFailure { get; set; }
}

然而结果是:

Unable to determine the principal end of an association between the types 'Step' and 'Step'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

当我删除其中一个 NextSteps 时,它起作用了。

我已经尝试了很多使用 Fluent API 或属性的方法,但似乎无法正常工作。根据我的阅读,EF 似乎试图在父-> 子关系中连接我的 2 个 NextStep 属性,然后当然失败了,因为未定义主体端。但就我而言,这些属性不属于同一关系。

最佳答案

这正是问题所在,EF 正在尝试创建一对一关系,并希望您指定哪一端是主体。如果你想创建两个不同的关系,那么我建议你覆盖上下文的 OnModelCreating 方法并添加以下配置:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Step>().HasRequired(s=>s.NextStepSuccess).WithMany();
modelBuilder.Entity<Step>().HasOptional(s=>s.NextStepFailure).WithMany();

选择在您方便时调用 HasRequiredHasOptional 方法。

关于c# - Entity Framework 中的多个自引用失败并出现 "principal end"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860104/

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