gpt4 book ai didi

c# - 在不将所有行都放入内存的情况下使用 LINQ to Entity

转载 作者:行者123 更新时间:2023-11-30 13:26:43 25 4
gpt4 key购买 nike

我用这个方法从EF中获取每一页的数据:

public IEnumerable<MyObj> GetByPage(int page, int perPage)
{
return context.MyObj.Skip((page - 1) * perPage).Take(perPage);
}

我想知道;此代码是否会获取 MyObj 的所有行并存储在内存中,然后将 SkipTake 或全部上面的代码将转换为 SQL 命令?

如果全部首先存储在内存中,我如何使用 LINQ to 实体而不使用内存来SkipTake

最佳答案

只要您没有具体化查询(即调用 ToList()/ToArray() 等,或对其进行迭代),您的 Skip Take 方法将由作为 Entity Framework 一部分的 Linq to Entities 提供程序转换为 SQL。

所以回答你的问题:不,它不会获取所有数据并将其加载到内存中。

参见 this MSDN article以获得完整的解释。

关于c# - 在不将所有行都放入内存的情况下使用 LINQ to Entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703289/

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