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 上进行单个导航 属性,将我带到 ItemA
或 ItemB
?或者我可以在什么地方使用 item.Thing!=null
? item.Thing.ItemA
或 item.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; }
}
我不确定这是否可行。 假设我有这个:
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 上进行单个导航 属性,将我带到 ItemA
或 ItemB
?或者我可以在什么地方使用 item.Thing!=null
? item.Thing.ItemA
或 item.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; }
}