【发布时间】:2021-11-30 17:10:24
【问题描述】:
如何使用 Entity Framework Core 从 ASP.NET Core Web API 调用包含多个连接的存储过程?
假设有部门 -> 员工 -> 地址表。现在,如果我想获取“每个部门有很多员工,每个员工有很多地址”的所有部门和相关数据,那么我们可以在这三个表之间的存储过程中进行内部连接。但是如何在 Web API 中使用 EF Core 获取分组数据(即嵌套列表)?
【问题讨论】:
-
存储过程的内容和其中使用的 SQL 构造无关紧要。您只需要创建一个类,其成员与 SQL Server 生成的结果集中的返回类型匹配。
-
应用程序web api、富客户端、控制台应用程序的类型也无关紧要。 EF 在每种类型的应用程序中的工作方式都相同。
-
我的自定义模型类包含部门属性,然后是员工列表,& 在员工模型中包含地址列表。问题是我能够获取部门的数据,但员工列表为空。当我看到 SP 的响应时,它返回的是平面数据。但我希望每个部门都有一个员工列表,然后每个员工都有一个地址列表。
-
SQL 查询的结果总是是“平坦的”——这就是 SQL 所做的——它返回一个由行和列组成的结果集。如果您想要这种分层样式的结果 - 您需要在存储过程中创建 XML 或 JSON,并将单个 XML 或 JSON 字符串返回给调用者,然后调用者需要解析此结果并将其重新构建为层次结构数据对象
标签: c# .net-core stored-procedures entity-framework-core asp.net-core-webapi