我不确定这是否可行。 假设我有这个:
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
?
我尝试了很多东西,却无法让它发挥作用。
答案 0 :(得分:0)
在Thing
类中有两个项目,这意味着单个项目可以是一个或多个事物的一部分。 (例如:对于Thing1,相同的项目可以是ItemA,而对于Thing2,它可以是ItemB)。在这种情况下,在Item表中不可能有一个FK列,因为它与Thing有一对多的关系。
您可以做的最好的事情是Item
类有一个它所属的事物列表。您还可以确定它是ItemA的哪些东西以及它是ItemB for。
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; }
}