Muh*_*Kuh 5 c# entity-framework
我正在尝试使用 Entity Framework 6 和 Code First 执行以下操作:
public class Step
{
public int Id { get; set; }
public Step NextStepSuccess { get; set; }
public Step NextStepFailure { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然而结果是:
无法确定类型“Step”和“Step”之间关联的主要端。必须使用关系流畅 API 或数据注释显式配置此关联的主体端。
当我删除 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();
Run Code Online (Sandbox Code Playgroud)
选择您方便的拨打电话HasRequired和HasOptional方法。