我想使用 C#(ASP.NET Web Api)在 JSON 輸出中創建員工和經理的層次結構樹。我使用了 EntityFramework。
我的獲取 api 代碼是 -
[Route("empLevel/{id}")]
public IActionResult GetEmpHierarchy(int id)
{
try
{
if (id == 0)
{
return NotFound();
}
var query_hierarchy = entity.EmployeeHierarchies.FromSqlInterpolated($"EXECUTE dbo.FindHierarchy {id}").ToList();
return Ok(query_hierarchy);
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
return NotFound();
}
EmployeeHierarchy 類的代碼是-
public class EmployeeHierarchy
{
public int Id { get; set; }
public int? MngId { get; set; }
public string Path { get; set; }
public string Name { get; set; }
public string FullPath { get; set; }
public int Level { get; set; }
public double Grade { get; set; }
}
我已經在從資料庫中獲取輸出的程序中使用了 CTE,它是 -
ALTER PROCEDURE [dbo].[FindHierarchy]
@empId int = null
AS
BEGIN
with cte as(
select Id, MngId, CAST('' AS VARCHAR(40)) ManagerName, Path = cast('' as varchar(40)),Name, Level = 0,Grade
from Employee
where MngId is null
union all
select EmpId = e.Id, ParentId = e.MngId,
CAST(cte.Name AS VARCHAR(40)) ManagerName,
Path = cast(concat(cte.Path, cte.Name, ' -? ') as varchar(40)),
Name = e.Name,
Level = cte.Level 1,
Grade = e.Grade
from
Employee e
inner join cte on cte.Id = e.MngId
)
select
Id ,
MngId ,
ManagerName,
Path ,
Name ,
FullPath = Path Name,
Level, Grade
from cte where ID=@empId
order by FullPath ;
END
目前我的輸出是:
[
{
"id":2,
"mngId":3,
"name":"Blake",
"fullPath":"Diana ? Chelsa ? Blake",
"level":2,
"grade":3.2
}
]
我想把它顯示為-
[
{
"id":2,
"mngId":3,
"name":"Diana",
"level":2,
"grade":5.2[
{
"id":2,
"mngId":3,
"name":"Chelsa",
"level":2,
"grade":5.1[
{
"id":2,
"mngId":3,
"name":"Diana",
"level":2,
"grade":3.2[]
}
]
}
]
}
]
我是asp.net web api 的新手,請為我的查詢建議一些代碼。謝謝!!
uj5u.com熱心網友回復:
您的 EmployeeHierarchy 應如下所示
public class EmployeeHierarchy
{
public int Id { get; set; }
public int? MngId { get; set; }
public string Path { get; set; }
public string Name { get; set; }
public string FullPath { get; set; }
public int Level { get; set; }
public double Grade { get; set; }
public EmployeeHierarchy ChildEmployee { get; set; }
}
這是我能看到的唯一方式。您也必須編輯 SQL 以匹配此模型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335663.html
標籤:C# json 实体框架 asp.net-web-api 得到
