【发布时间】:2015-12-15 17:21:18
【问题描述】:
我想使用实体框架从自引用表中选择所有相关记录。我没有具体的水平。它仅适用于所有相关记录 all child 和 all parent 。下面是一些示例数据。所以如果我将 ID 5 传递给我的函数,它应该给我 id 为 1,4,5,7,8 的记录。
5 是 ID 7 的父 ID,而 7 是 ID 8 的父 ID。同样, 5 的父 ID 为 1 , 1 也是 Id 4 的父 ID。
因此,我想以这种方式选择 Id 5 的所有上下记录。
数据源
Id Name ParentId
1 Test 1 NULL
2 Test 2 NULL
3 Test 3 NULL
4 Test 4 1
5 Test 5 1
6 Test 6 4
7 Test 7 5
8 Test 7 7
预期
1 Test 1 NULL
4 Test 4 1
5 Test 5 1
7 Test 7 5
8 Test 7 7
【问题讨论】:
-
看看这个question。你需要一个递归查询,看起来 EF 不直接支持它
-
我没有写任何可以用作基础的实体。我试图使用单独的循环读取上下记录,但在这里因为我没有任何级别,所以它需要某种递归。所以我的代码根本不起作用,并且 .你可以从头开始。
-
从这里开始sqlfiddle.com/#!3/497b0/6。它不是一个完整的答案
-
非常感谢。我也在尝试一些事情。那么我需要做两个单独的查询吗?一个用于下面的记录,一个用于上面的记录,并将它们推送到临时表中,然后从中选择删除重复的记录。
-
我添加了一个名为 RootId 的新列来支持多个树层次结构族。从给定的 Id 现在我可以获取根 Id 并使用根 Id 加载完整的树。 sqlfiddle.com/#!3/9d931
标签: c# sql-server entity-framework