EF - IQueryable - 两个选择一个db调用

时间:2018-02-12 13:33:56

标签: c# entity-framework tsql asp.net-core

我正在使用Entity Framework Core和IQueryable从表中执行非常正常的选择数据。我在搜索中使用分页,因此要根据页面大小和当前页面获取行x到y。

这是我的代码:

_dbContext.Orders.Where(o => o.UserId == userId)
   .Skip((pageNo - 1) * pageSize).Take(pageSize).ToListAsync();

结果SQL:

SELECT [o].[UserId], [o].[OrderId], [o].[OrderDate], [o].[OrderType], [o].[FromNameAddressId], [o].[ToNameAddressId], [o].[Status]
FROM [Orders] AS [o]
WHERE [o].[UserId] = 12
ORDER BY (SELECT 1) OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY;

我面临的问题是我还希望将总记录数作为查询结果的一部分返回,并最终(当前)必须将其作为对db的单独调用。

这是我的代码:

_dbContext.Orders.Where(o => o.UserId == userId).CountAsync();

结果SQL:

SELECT COUNT(*) FROM [Orders] AS [o] WHERE [o].[UserId] = 12;

我希望提高效率,因此我们希望将总记录数作为第一个查询的一部分返回,或者使用一个db调用而不是两个来运行两个选择。以前有人有过这个吗?我对Entity Framework很新,所以这可能很容易实现。

提前感谢任何指针!

0 个答案:

没有答案