亚音速+分页问题

时间:2009-07-22 14:07:26

标签: subsonic

我正在尝试使用Subsonic进行服务器端分页。使用.Paged函数运行良好(网络广播的链接似乎被打破了btw)。但是,如何从查询中获取记录总数(没有.Paged函数),即我是否需要在查询上运行记录计数,该记录首先返回完整结果?如果是,那么它有点无法实现服务器端分页的目的吗?

e.g。

SQLQuery q = Select.Allfromcolumns .Paged(1,10),仅返回10条记录。但是,我需要首先知道产品中的记录总数以确定我的页面链接吗?

对于一个简单的表,不需要服务器端分页,但我的查询非常复杂,我需要主要使用分页功能来提高性能。

感谢

3 个答案:

答案 0 :(得分:3)

以下将返回将返回的记录总数的计数,以便您可以构建查询,然后在其上调用GetRecordCount()以查找将返回的记录数,然后调用Paged(1,10)返回第一页:

SqlQuery query = Select.AllColumnsFrom<Product>();
int numberOfRecords = query.GetRecordCount();
List<Product> products = query.Paged(1, 10).ExecuteTypedList<Product>();

答案 1 :(得分:1)

我想指出,通常当有人进行“服务器端”分页时,他们会运行一个返回所有行的查询。他们计算行数(记录数),然后他们获取显示给用户所需的行并显示子集(良好的开销和处理量)。使用Adam发布的查询,如果在第一次请求时缓存“numberofRecords”,然后在每个后续请求中执行仅从数据库中返回所需行的分页查询,您将节省大量开销。

答案 2 :(得分:1)

SqlQuery query = Select.AllColumnsFrom<Product>(); 
if(IsfirstCall){//Set firstCall = false on all subsequent calls to the method
int numberOfRecords = query.GetRecordCount(); }
List<Product> products = query.Paged(1, 10).ExecuteTypedList<Product>();