gpt4 book ai didi

c# - 在 Entity Framework 中使用存储过程,如何让实体填充其导航属性?

转载 作者:IT王子 更新时间:2023-10-29 04:34:49 24 4
gpt4 key购买 nike

Entity Framework 非常慢,所以我尝试使用存储过程,但遇到了这个问题。

Entity Framework 允许您定义生成实体的存储过程。但是,我的实体具有“导航属性”,在使用此方法时不会填充这些属性。

有变通办法吗?

最佳答案

良好的存储过程不可组合。因此,无法使用 Include() 或其他方式调用您的 SPROC 并让 EF 在同一查询中自动填充关系。

假设您有产品和类别

并且您有一个存储过程来获取产品:

var products = context.GetProducts(someproductfilter);

生成的产品不会加载其类别。

但是,如果您有第二个存储过程来获取所述产品的类别:

var categories = context.GetCategoriesForProducts(someproductfilter);

EF 中的一项功能称为关系修复,一旦第二个实体进入上下文,它就会链接相关实体,将确保在进行两次调用后,产品中的每个产品都将具有非空类别。

这并不理想,因为您正在执行多个查询,但它会起作用。

另一种方法是使用 EFExtensions .编写该代码的人创造了编写一次性加载更多数据的存储过程的能力。

希望对你有帮助

干杯亚历克斯

关于c# - 在 Entity Framework 中使用存储过程,如何让实体填充其导航属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035677/

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