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

C# 如何在EF7(Core)中为同一个表创建多个关系?,c#,entity-framework-core,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<

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

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; }
}
公共类单元
{
public int UnitID{get;set;}
...
公共可为空的PreviousUnitID{get;set;}
[ForeignKey(“PreviousUnitID”)]
公共单元PreviousUnit{get;set;}
公共可空的子序列{get;set;}
[外汇(“后续突尼斯”)]
公共单元子序列{get;set;}
}
无法将导航属性“”添加到实体类型“Unit”,因为实体类型“Unit”上已存在同名的导航属性

我想这应该归咎于这个有点奇怪的导航,所以我忽略了其他同学。有人知道我可以绕过这个问题的方法吗


谢谢!

使用虚拟设备而不是单元

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; }
}
公共类单元
{
public int UnitID{get;set;}
公共可为空的PreviousUnitID{get;set;}
公共可空的子序列{get;set;}
公共虚拟上一个单元{get;set;}
公共虚拟子序列{get;set;}
}

创建任意数量的关系

使用虚拟关键字:

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; }
}
公共类单元
{
public int UnitID{get;set;}
...
公共可为空的PreviousUnitID{get;set;}
[ForeignKey(“PreviousUnitID”)]
公共虚拟单元PreviousUnit{get;set;}
公共可空的子序列{get;set;}
[外汇(“后续突尼斯”)]
公共虚拟单元子序列{get;set;}
}
这还允许延迟加载单元

编辑:
也许这也有帮助:

这是RC1的一个已知问题

问题:

发展链:

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

这将是#4069,在我们的夜间构建中固定,并将在RC2中发布


我可能没有虚拟类所来自的库,或者您打算将先前的Unit/SubsequentUnit设置为虚拟属性,此时我仍在使用Unit类,但它并没有解决问题。否定-我回滚到迁移0并重试,仍然遇到相同的问题,因此它尚未得到回答。我不相信加载是在EF7/EFCore中配置的。但不幸的是,不管怎样,我在创建迁移时仍然遇到相同的导航属性问题。我认为这可能会有帮助,但我没有用迁移测试它,因为我不知道您的上一次配置。也许这会有帮助:哦,谢谢!我会注意这一点,可能不是代码问题嗯,这只是早期的迁移。嗯,看来这是一个正在RC2中修补的错误。