如何在EF7(Core)中为同一个表创建多个关系?

时间:2016-01-26 14:15:54

标签: c# entity-framework-core

我正在尝试构建迁移,但它在以下类中遇到了障碍:

public class Unit
{
    public int UnitID { get; set; }
    ...
    public Nullable<int> PreviousUnitID { get; set; }

    [ForeignKey("PreviousUnitID")]
    public Unit PreviousUnit { get; set; }

    public Nullable<int> SubsequentUnitID { get; set; }

    [ForeignKey("SubsequentUnitID")]
    public Unit SubsequentUnit { get; set; }
}

“导航属性”无法添加到实体类型“单元”,因为实体类型“单元”上已存在具有相同名称的导航属性。

我假设这个稍微奇怪的导航是责备所以我遗漏了其余的课程。有谁知道我可以绕过这个问题的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用虚拟而不是单位

public class Unit
{
public int UnitID { get; set; }
public Nullable<int> PreviousUnitID { get; set; }
public Nullable<int> SubsequentUnitID { get; set; }

public Virtual PreviousUnit { get; set; }
public Virtual SubsequentUnit { get; set; }
}

根据需要创建尽可能多的关系

答案 1 :(得分:0)

使用虚拟关键字:

public virtual Unit PreviousUnit { get; set; }
public virtual Unit SubsequentUnit { get; set; }

完整代码:

public class Unit
{
public int UnitID { get; set; }
...
public Nullable<int> PreviousUnitID { get; set; }

[ForeignKey("PreviousUnitID")]
public virtual Unit PreviousUnit { get; set; }

public Nullable<int> SubsequentUnitID { get; set; }

[ForeignKey("SubsequentUnitID")]
public virtual Unit SubsequentUnit { get; set; }
}

这也可以延迟加载单位。

编辑: 也许这也有帮助:https://github.com/aspnet/EntityFramework/issues/3911

答案 2 :(得分:0)

这是RC1的一个已知问题。

问题:

开发链: https://github.com/aspnet/EntityFramework/pull/4239

  罗丹米勒于1月8日发表评论

     

那将是#4069,它在我们的夜间版本中修复并将在RC2中发布。