gpt4 book ai didi

entity-framework - Entity Framework 函数导入,无法加载返回实体类型的函数的关系

转载 作者:行者123 更新时间:2023-12-03 07:34:10 25 4
gpt4 key购买 nike

我创建了一个函数导入,它返回存储过程的结果作为我的实体之一。但是我似乎无法遍历导航属性来访问其他实体中的数据。我知道您可以将 include() 用于 objectQueries,但找不到任何可以强制 EF 加载我的关系以获取函数导入的实体结果的内容。

有什么想法吗?

提前致谢。

最佳答案

这在 EF 1.0 中是不可能的

原因是 EF 会将存储过程值视为只是值,而不是导航属性。

例如,Employee实体有多个Order实体。在 Order 中,您有一个名为 EmployeeID 的属性。当数据库使用 include 语句填充您的查询时,它会在 SQL 中创建 1 个投影查询来填充特定员工可能拥有的所有订单数据。

所以如果我说

var员工 = context.Employees.Include("订单").Where(e => e.ID == 1).First();

var 订单=员工.订单;

第一个查询的 SQL 将创建一个投影查询,其中包含 EmployeeID = 1 的订单。

现在,当您的存储过程运行时,它可以在幕后执行任何代码(换句话说,它可以返回任何数据集)。因此,当 SQL 运行存储过程时,它只是运行该存储过程中的代码,并且不知道 Order 上的 EmployeeID 是该属性的 FK。此外,如果您的存储过程返回 Employee 实体,那么您将面临另一种情况,您甚至没有 OrderID 可供追求。

要解决此问题,您可以使用可以镜像任何存储过程的 Include 语句在 EF 中设置查询。如果您正确组合使用 .Select 和 .Ininclude 语句,您应该能够做同样的事情。

关于entity-framework - Entity Framework 函数导入,无法加载返回实体类型的函数的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/371933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com