在实体框架中,使用LINQ to Entities,数据库分页通常以下列方式完成:
int totalRecords = EntityContext.Context.UserSet.Count;
var list = EntityContext.Context.UserSet
.Skip(startingRecordNumber)
.Take(pageSize)
.ToList();
Run Code Online (Sandbox Code Playgroud)
这导致两个数据库调用.
请告诉我,如何将其减少到一个数据库调用.
谢谢.
使用Esql并将存储过程映射到实体可以解决问题.SP将返回totalRows作为输出参数,将当前页面作为结果集返回.
CREATE PROCEDURE getPagedList(
@PageNumber int,
@PageSize int,
@totalRecordCount int OUTPUT
AS
//Return paged records
Run Code Online (Sandbox Code Playgroud)
请指教.
谢谢.
嗯...使用分页的实际呼叫是第二个-这是单个呼叫。
第二个调用是确定行的总数-这是一个完全不同的操作,而且我不知道有什么方法可以将这两个不同的操作组合到带有实体框架的单个数据库调用中。
问题是:您真的需要总行数吗?做什么的?这值得进行第二次数据库调用吗?
您将拥有的另一种选择是使用EntityObjectSource(在ASP.NET中),然后将其绑定到GridView,然后在GridView上启用AllowPaging和AllowSorting等,然后让ASP.NET运行时处理所有细碎的工作检索适当的数据页面并显示它。
渣
| 归档时间: |
|
| 查看次数: |
28774 次 |
| 最近记录: |