EF6 导航属性相同类型到单反

EF6 Navigation Properties Same Type To Single Inverse

我不确定这是否可行。 假设我有这个:

public class Thing{
    public int ThingId {get; set;}
    public virtual Item ItemA {get; set;}
    public virtual Item ItemB {get; set;}
}

public class Item{
    public int ItemId {get; set;}
}

如何在 Item 上进行单个导航 属性,将我带到 ItemAItemB?或者我可以在什么地方使用 item.Thing!=nullitem.Thing.ItemAitem.Thing.ItemB?

我尝试了很多方法,但无法正常工作。

Thing class 中有两个项目,这意味着单个项目可以是一个或多个事物的一部分。 (例如:同一个项目对于 Thing1 可能是 ItemA,对于 Thing2 可能是 ItemB)。在这种情况下,Item 中不可能有 FK 列 table,因为它与 Thing.

具有一对多关系

你能做的最好的事情就是让 Item class 有一个它所属的事物列表。您还可以确定哪些事物是 ItemA,哪些事物是 ItemB。

class Thing
{
    public int ThingId { get; set; }

    [InverseProperty("ItemAFor")]
    public Item ItemA { get; set; }

    [InverseProperty("ItemBFor")]
    public Item ItemB { get; set; }
}

class Item
{
    public int ItemId { get; set; }

    // Things where this Item is ItemA
    public List<Thing> ItemAFor { get; set; }

    // Things where this Item is ItemB
    public List<Thing> ItemBFor { get; set; }
}