gpt4 book ai didi

sql - 大型数据集的 Entity Framework 速度慢

转载 作者:行者123 更新时间:2023-12-01 11:54:18 27 4
gpt4 key购买 nike

我正在使用 Entity Framework 来检索大型数据集。

数据集有parent/child关系,我需要和parent同时带回child信息。

我发现 EF 最初发送一个查询以获取父对象列表,然后遍历每个父对象并在数据库中查询子信息。

因此,如果我有 1000 个父对象,我最终会调用 DB 总共 1001 次(每个父对象调用一次,加上获取父对象列表的原始查询)。

有没有办法让 EF 查询更高效?像这样的东西:

SELECT * FROM CHILD_OBJECT_TABLE WHERE PARENTID IN (LIST OF PARENT_IDS HERE)

最佳答案

您如何执行查询?如果您使用延迟加载,您会遇到您描述的行为。相反,使用 Include 函数指定将特定导航属性(无论是相关实体还是集合)加载为查询的一部分。简而言之,EF 将生成两种关系的扁平笛卡尔积,然后在实例化您的对象时将数据适本地重新膨胀为父 -> 子关系。

例如,如果您的父类有一个名为“Children”的集合属性,您可以这样调用它:

context.Parents.Include("Children").Where(p=> ...)

或者如果您更喜欢查询语法而不是扩展方法语法...

from p in context.Parents.Include("Children")

where p ...

关于sql - 大型数据集的 Entity Framework 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594993/

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