OData Unbound Function与客户端分页

时间:2016-10-27 20:51:09

标签: pagination odata

我有以下OData功能配置:

  ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
  var function = builder
    .Function("GetValues")
    .ReturnsCollection<ObjectType>();
  function.Parameter<int>("parm1");

使用以下控制器操作:

[ODataRoute("GetValues(parm1={parm1})")]
[RequireOperation(ClientPermissionsEnum.HSA)]
[EnableQuery(AllowedQueryOptions = ODataConfig.AllowedOptions)]
public IQueryable<ObjectType> GetValues(int parm1)
{
  return _repository.GetValues(parm1).AsQueryable());
}

ODataConfig.AllowedOptions包括:skip,orderby,count,top,format和filter。

当我转到http://..../GetValues(1)?%24format=json&%24top=5&%24count=true网址时,我得到了&#34; @ odata.context&#34;和&#34;价值&#34;响应的属性。 &#34;值&#34;属性正确包含前5个结果。我可以使用正确的跳过值发出另一个请求并获取下一个5等等。但是,答案从不包括&#34; @ odata.count&#34;属性。这可以防止客户端意识到结果多于单个页面上的结果。

是否可以配置未绑定的函数以在客户端分页的响应中包含计数?这适用于实体绑定的odata路由,但我宁愿不必这样做parm1值当前不是ObjectType类的属性。

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本,这已在https://github.com/OData/WebApi/issues/484中修复,我认为您可以将OData Web API升级到5.9.1或更改版本6.0.0并重试。 https://www.nuget.org/packages/Microsoft.AspNet.OData