WCF数据服务分页行为

时间:2011-01-07 03:20:39

标签: pagination odata wcf-data-services

在我的示例项目中,我将实体页面大小设置为20.然后我有一个实体集,其结果计数可以对页面大小进行整除。例如,类别集包含100个项目。当我去:

 http://localhost/Sample.svc/Categories?$skiptoken=80

我有第81到第100个类别,页面有“下一个”链接

 http://localhost/Sample.svc/Categories?$skiptoken=100

我试图去那个页面,它什么也没有返回。 对此有何解释?

1 个答案:

答案 0 :(得分:1)

分页只需要下一个PageSize项。如果它发现少于那个,那么很明显没有更多的项目要返回,所以你没有得到下一个链接。如果查询返回所请求的项目数,则运行时不会尝试确定这是否是最后一页,它只返回下一个链接。可能会发生这样的链接不会返回任何结果。 实际上,下一个链接不一定会返回任何结果,但只要响应保留另一个下一个链接,就可能会有更多结果。标准内置分页将返回预定义大小的页面(最后一个除外),但服务可以自由使用任何其他类型的分页,这些分页可能会为每个页面返回不同的大小(包括空页面)。

直接回答您的问题“为什么最后一页为空?”: 运行时不会“向前看”,因此它无法判断给定页面是否是最后一页,除非它的结果小于预期的结果数。展望未来既昂贵(要求超过必要)又可能出错(如果额外结果导致错误怎么办......)。