[EnableQuery(PageSize=20)]
和[EnableQuery(MaxTop=20)]
之间的区别是什么?
据我所知,他们都对结果设定了最大限制。
在其中任何一个上调用GET odata/Products?$top=100
都只能给我20个结果。
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为@ jvitor83的答案是有道理的。
MaxTop仅影响请求Uri包含$ top的方案。如果$ 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
。
答案 2 :(得分:1)
OData提供了两种服务器挂接模式:客户端驱动和服务器驱动。
PageSize
控制服务器在服务器驱动模式下使用的页面大小。如果呼叫者提供了$top
参数,则不使用。
MaxTop
控制呼叫者可以在客户端驱动模式下指定的最大$top
值。
呼叫者将提供页面大小参数($top
)。服务器将使用$top
进行暂停。调用者可以提供$skip
参数以获取下一页。
示例:
第一页:http://server/odata/Entity?$top=20
下一页:http://server/odata/Entity?$top=20&$skip=20
呼叫者将不提供页面大小参数($top
)。服务器将使用PageSize
参数进行设置。响应在JSON结果中包含一个@data.nextLink
条目,以使调用者获得下一页数据。
PageSize = 20
的示例:
第一页:http://server/odata/Entity
服务器将@data.nextLink
返回到下一页:http://server/odata/Entity?$skip=20