Пейджинговое поведение службы данных WCF - PullRequest
0 голосов
/ 07 января 2011

В моем примере проекта я установил размер страницы сущности равным 20. Затем я установил сущность с числом результатов, которое делится на размер страницы. Например, набор «Категории» содержит 100 элементов. Когда я иду к:

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

Я получил от 81-й до 100-й категории, и на странице есть ссылка "следующая"

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

Я пытался перейти на эту страницу, и она ничего не возвращает. Чем это объясняется?

1 Ответ

1 голос
/ 11 января 2011

Пейджинг просто берет следующие элементы PageSize.Если он найдет меньше, то ясно, что больше нет предметов, которые можно вернуть, поэтому вы не получите следующую ссылку.Если запрос возвращает запрошенное количество элементов, среда выполнения не пытается выяснить, последняя ли это страница или нет, она просто возвращает следующую ссылку.Может случиться, что такая ссылка не даст результатов.Фактически следующая ссылка не обязана возвращать какие-либо результаты, но пока ответ содержит другую следующую ссылку, потенциально может быть больше результатов.Стандартный встроенный пейджинг будет возвращать страницы предварительно определенного размера (кроме последнего), но службы могут использовать любой другой вид пейджинга, который может возвращать разные размеры для каждой страницы (включая пустые страницы).

Чтобы прямо ответить на ваш вопрос «Почему последняя страница пуста?»: Среда выполнения не «смотрит вперед», поэтому не может определить, является ли данная страница последней, за исключением случаев, когда она становится меньше ожидаемого числаРезультаты.Заглядывание в будущее было бы дорогостоящим (требуя больше, чем необходимо) и потенциально неправильным (что, если дополнительный результат вызывает ошибку ...).

...