我在图表中的节点之间有很多关系。节点之间的所有连接都是双向的。
因此我有一个节点表:
NodeId | NodeName
1 A
2 B
3 C
4 D
节点链接表:
LeftNodeId | RightNodeId
1 2
1 4
2 3
3 4
如您所见,我的图表如下:
A - B - C
| |
---D---
当我将其拉入EF模型时,我的Node对象将具有两个导航属性 - 节点和Node1。节点将包含“左”节点,Node1将包含“右”节点。
我的问题是如何最好地设置SQL数据库,以便我只有一个导航属性,例如邻居节点的“邻居”?
节点之间的关系总是双向的。
答案 0 :(得分:1)
“不可能”。 EF要求单独维护两种导航属性。例如,如果您有节点2,则一个属性将包含2和3之间的关系(因为2位于左侧),第二个导航属性将包含1和2之间的关系(因为2位于右侧)。
如果您需要显示所有关系的单个属性,则可以使用非映射计算属性:
public IEnumerable<Node> AllRelations
{
get
{
return LeftRelations.Concat(RightRelations);
}
}