【问题标题】:EF Many to many relationship with a navigation propertyEF 与导航属性的多对多关系
【发布时间】:2012-01-13 10:05:09
【问题描述】:

我在图中的节点之间有多对多的关系。节点之间的所有连接都是双向的。

因此我有一个节点表:

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 对象将具有两个导航属性 - Nodes 和 Node1。节点将包含“左”节点,Node1 将包含“右”节点。

我的问题是如何最好地设置 SQL 数据库,以便我只有一个导航属性,例如相邻节点的“邻居”?

我的节点之间的关系总是双向的。

【问题讨论】:

    标签: sql-server entity-framework many-to-many


    【解决方案1】:

    这是“不可能的”。 EF 要求分别维护这两个导航属性。例如,如果您有节点 2,一个属性将包含 2 和 3 之间的关系(因为 2 在左侧),第二个导航属性将包含 1 和 2 之间的关系(因为 2 在右侧)。

    如果您需要显示所有关系的单个属性,您可以使用非映射计算属性:

    public IEnumerable<Node> AllRelations
    {
        get
        { 
            return LeftRelations.Concat(RightRelations);
        }
    }
    

    【讨论】:

    • 这不是关于 SQL 而是关于 EF 中的联结表的解释。
    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多