2015-03-20 4 views
3

В чем разница между [EnableQuery(PageSize=20)] и [EnableQuery(MaxTop=20)]?Разница между PageSize и MaxTop

Насколько я могу судить, они оба устанавливают максимальный предел для результата.

Вызов GET odata/Products?$top=100 на любой из них дают мне только 20 результатов.

+1

Попробуйте изменить свой запрос на 'GET odata/Products', и вы сразу поймете разницу. – julealgon

ответ

1

Как описано в MSDN:

MaxTop = Получает или задает максимальное значение $ верхней, что клиент может запросить.

PageSize = Получает или задает максимальное количество результатов запроса для отправки обратно клиентам.

+3

Это не объясняет разницу: / –

1

Я думаю, что ответ @ jvitor83 имеет смысл.

MaxTop влияет только на сценарии, в которых запрос Uri содержит $ top. Если $ верхнее значение превышает значение MaxTop, вы можете получить следующее сообщение об ошибке:

{ 
    "error":{ 
    "code":"","message":"The query specified in the URI is not valid. The limit of '20' for Top query has been exceeded. The value from the incoming request is 
'100'." 
    } 
} 

Однако PAGESIZE влияет на конечный результат запроса. Например, вы устанавливаете [EnableQuery(PageSize=20)], это означает, что вы хотите, чтобы сервер возвращал 20 результатов, если число конечных результатов превышает 20.

И конечный результат запроса определяется тем, используется ли $ top. Если не $ top set, итоговым результатом запроса является общий набор данных. И, если $top=x и x меньше или равно MaxTop, конечным результатом является верхняя x.