我正在尝试使用Entity Framework 6和Code First执行以下操作:
public class Step
{
public int Id { get; set; }
public Step NextStepSuccess { get; set; }
public Step NextStepFailure { get; set; }
}
然而结果是:
无法确定之间关联的主要结束 类型'步骤'和'步骤'。这种关联的主要目的必须是 使用关系流畅的API或数据显式配置 注释
当我删除其中一个NextSteps时,它可以正常工作。
我已经尝试了很多使用Fluent API或属性的方法,但似乎我无法实现这一点。根据我的阅读,EF似乎试图在父 - >子关系中连接我的2个NextStep属性,然后当然失败,因为没有定义主端。但就我而言,这些属性不属于同一种关系。
答案 0 :(得分:3)
这就是问题,EF正在尝试创建一对一的关系,并希望您指定哪些目标是委托人。如果您想创建两个不同的关系,那么我建议您覆盖上下文的OnModelCreating
方法并添加以下配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Step>().HasRequired(s=>s.NextStepSuccess).WithMany();
modelBuilder.Entity<Step>().HasOptional(s=>s.NextStepFailure).WithMany();
选择在您方便时调用HasRequired
和HasOptional
方法。