【问题标题】:Navigating trees with LINQ to entities使用 LINQ 将树导航到实体
【发布时间】:2010-10-08 09:05:51
【问题描述】:

我有一个名为 Area 的表,它以分层方式存储区域。表中有一个 Id 和一个 ParentId 列。 ParentId 通过外键链接到表的 Id 列。

当我生成 EDM 时,我得到了两个导航属性,Area1 和 Area2。 我应该如何取回我的区域的树结构,并使用 LINQ to 实体在树中导航?

我可能完全问错了问题,请多多包涵。 :)

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    这是正确的问题。当您基于数据库架构生成时,LINQ 会自动命名子级和父级。

    我会检查你的模型的designer.cs,但最有可能的是Area1 是孩子,Area2 是父母。反之亦然。

    如果要获取当前 Area 实例的所有子节点:

    foreach (Area childArea in currentArea.Area1) {
        // do something
    }
    

    如果你想要父母:

    Area parentArea = currentArea.Area2;
    

    不知道能不能重命名child和parent,应该是可以的。只是没有深入研究。

    【讨论】:

      【解决方案2】:

      我认为简单地重命名属性将消除您的大部分困惑。这些属性之一是当前实例的子代;另一个是当前实例的父级。查看映射细节以确定哪个是哪个。然后更改属性的名称以对应其功能。现在查询应该更容易编写了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多