entity-framework - 如何通过 Linq-To-Entities 获取某个节点的所有后代?

标签 entity-framework c#-4.0 linq-to-entities recursive-query

我需要递归地获取某个节点的所有后代。例如,对于 Id=1 的节点,我需要获得以下后代:2、3、4、5、6。对于 Id=2 的节点,我需要获取节点:4、5、7。我如何才能以对服务器的最少请求赢得 Linq-To-Entites?

    | Id | ParentId | Name |
    ------------------------
    | 1  |    1     |  a   |
    ------------------------
    | 2  |    1     |  b   |
    ------------------------
    | 3  |    1     |  c   |
    ------------------------
    |  4 |    2     |  d   |
    ------------------------
    |  5 |    2     |  e   |
    ------------------------
    |  6 |    3     |  f   |
    ------------------------
    |  7 |    5     |  g   |

最佳答案

通过单个请求执行它的唯一方法是对 SQL 数据库中的存储函数使用 ExecuteQuery。虽然此存储函数将使用 Common Table Expression用于递归查询。

如果它解决了问题,请将其标记为答案。

关于entity-framework - 如何通过 Linq-To-Entities 获取某个节点的所有后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996466/

相关文章:

c# - EF 6.1 中的 LINQ 查询自定义对象最佳实践

c# - 为什么我通过 C# 代码得到格式错误的契约(Contract)?

.net - 使用异步 .net 4.0 返回数据表

security - LINQ to Entities 和 SQL 注入(inject)

c# - 涉及过滤、展平和分组时理解 Linq 查询结构的问题

c# - LocalDB 数据库首先用于 Entity Framework 代码

c# - Fluent API 中具有常量的外键

c# - 使用 EF6 从数据库中选择大量数据异步

c# - 返回 Task.Factory.StartNew( ()=>{ ; } ) 不正确吗?

c# - Linq 查询中的“IN”和 'NOT IN'