AFAIK在LINQ和EF中均不支持递归CTE。解决方案是将CTE作为视图公开。有关使用EF Code
First和Migrations进行递归或分层查询的文章,介绍了如何使用EF
Code First迁移来部署这种视图。
尝试通过进行递归客户端迭代来模拟CTE并不能扩展到大型数据集,并导致与服务器之间的交流。请注意,您的EF代码是如何
IEnumerable不返回的
IQueryable,这意味着它将实现每个级别,然后将每个条目的下一个级别串联
为一个单独的请求 。基于LINQ的解决方案将适用于条目数有限的浅层次结构(并且请注意,许多项目 可以
具有这种数据布局,用户帖子/答案是典型示例),但是在具有许多元素的深层次结构中会崩溃。



