在Entity Framework中获取父部门节点

Ali*_*ani 6 c# sql-server entity-framework database-first

我有一个像这样的SQL表:

myDepartment

DepartmentID是部门的父母.我通过这个表构建了一个树(在ASP.net(C#)项目中):

树

上面树中的记录是:

记录

我需要让父母在这棵树上.

我可以在SQL Server中这样做(例如id=2,id输入参数):

with cte1
as
(
select id,name,DepartmentID, 0 AS level 
from Department 
where id =2
union all 
select Department.ID,Department.name,Department.DepartmentID, level+1  
from Department 
inner join cte1 on Department.ID=cte1.DepartmentID
)
select * from cte1
Run Code Online (Sandbox Code Playgroud)

输出(id = 2(A))

产量

输出(id = 4(A1))

两个更高级别

我知道EF不支持cte,但我需要在EF中获得此结果.

如果有人可以解释这个问题的解决方案将是非常有帮助的.

小智 2

这些帖子与您的问题类似。请参阅以下内容:

使用实体框架流畅语法或内联语法
编写递归 cte 将包含 with-cte 的 sql 语句转换为 linq

我认为没有办法编写一个可以获取所有内容的 LINQ to SQL 查询。但是,LINQ 支持一种执行查询的方法(奇怪的是,称为 DataContext.ExecuteQuery)。看起来您可以使用它来调用任意 SQL 片段并将其映射回 LINQ。

请参阅这篇文章: 实体框架中的公共表表达式