c# – 使用LINQ to Entity而不将所有行放入内存
发布时间:2020-12-16 00:09:10 所属栏目:百科 来源:网络整理
导读:我使用这种方法从EF获取每一页数据: public IEnumerableMyObj GetByPage(int page,int perPage){ return context.MyObj.Skip((page - 1) * perPage).Take(perPage);} 我想知道;这段代码是否会获取MyObj的所有行并存储在内存中,然后Skip and Take或上述所有
我使用这种方法从EF获取每一页数据:
public IEnumerable<MyObj> GetByPage(int page,int perPage) { return context.MyObj.Skip((page - 1) * perPage).Take(perPage); } 我想知道;这段代码是否会获取MyObj的所有行并存储在内存中,然后Skip and Take或上述所有代码都将转换为SQL命令? 如果所有第一个都将存储在内存中,我如何使用LINQ实体不使用内存来跳过并取走? 解决方法
Skip和Take都列为
LINQ to Entities supported methods,因此它们将转换为正确的SQL语句,并且只从数据库中检索必要的行.
并且因为您的方法返回IEnumerable< T>而不是IQueryable< T>对该方法返回的查询的每次调用都将导致查询执行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |