【发布时间】:2018-06-06 04:50:12
【问题描述】:
Entity Framework 是否支持某种递归 LINQ,还是我必须用 SQL 编写查询? (使用 ParentId - 典型的类别子类别问题)
【问题讨论】:
-
您到底想达到什么目标?请具体一点。
-
@cloudikka 基本操作,例如取出整个层次结构
-
(1) 没有。它不是 EF 特定的,而是
Queryable和一般的表达式树限制 - 无法定义递归表达式。 (2) 由于 EF 导航属性修复,可以采用整个层次结构。但是,使用单个 L2E 查询是不可能的(除非您加载全部三个然后在内存上应用过滤器)。见Is recursive query possible in LINQ -
@IvanStoev:不完全是真的表达式树有这样的限制。您可以编写递归表达式。例如Factorial expression.
-
@cloudikka 但它在内部使用
Finc<..>。我的意思是纯表达式(这是可查询的要求,因为它们必须是可识别和可翻译的,对于未知的Func<...>代码不能这么说)
标签: c# asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6