如何在WCF数据服务(版本2)中结合使用过滤和服务器端分页?
在下面的代码段中,NextLinkUri始终缺少$ filter查询参数。我尝试用NextLinkUri构建一个新的Uri并重新添加$ filter param并执行这个新的Uri。毫不奇怪,这会导致服务器端错误。
var query3 = ServiceContext.ConventionalReturnFacts;
var filterString = String.Format("CalendarDateId ge {0} and CalendarDateId lt {1}",
passedCalendarYear * 10000,
(passedCalendarYear + calendarYearIncrement) * 10000);
query3.AddQueryOption("$filter", filterString);
// Get first page of results
var response = query3.Execute();
result.Results = response.ToList();
// Get remaining pages (if any)
var continuation = ((QueryOperationResponse)response).GetContinuation();
while (continuation != null)
{
// NextLinkUri is missing the $filter query parameter so pages 2 and
// up end up having unfiltered entities!
response = ServiceContext.Execute<ConventionalReturnFact>(continuation.NextLinkUri);
((List<ConventionalReturnFact>)result.Results).AddRange(response.ToList());
continuation = ((QueryOperationResponse)response).GetContinuation();
}
答案 0 :(得分:0)
客户端不应将任何系统查询选项附加到下一个链接的URL。下一个链接对客户端不透明。
在您的情况下,下一个链接应该返回过滤数据的下一页。如果没有,这是服务问题,而不是客户。