【问题标题】:OData $select not working on Web APIOData $select 不适用于 Web API
【发布时间】:2013-07-12 14:59:27
【问题描述】:

我正在尝试使用 OData 从我的 Web API 返回一个较小的分页结果集。我正在修改一个大型的现有 API,因此我希望能够仅针对这一个控制器和方法执行此操作,最好不使用 NuGet、EdmModels 等提供的广泛的“Microsoft ASP.NET Web API OData”包。

我的 $top 和 $skip 在下面的方法中工作正常,但我的 $selects 被忽略了。

我的方法:

    [Queryable(AllowedQueryOptions = System.Web.Http.OData.Query.AllowedQueryOptions.Select | System.Web.Http.OData.Query.AllowedQueryOptions.Top | System.Web.Http.OData.Query.AllowedQueryOptions.Skip )]
[HttpGet]
public HttpResponseMessage GetByType(OrganizationType type) {
    var results = _service.List(type);
    return(Request.CreateResponse<IQueryable<OrganizationModel>>(results.Any() ? HttpStatusCode.OK : HttpStatusCode.NotFound, results.AsQueryable<OrganizationModel>()));
  }
}

任何想法为什么忽略 $select?

【问题讨论】:

  • 取决于你的“优势”程度,它是may not be supported yet
  • 忽略是什么意思?你得到了所有的属性,而不仅仅是 $select'ed 属性?另外,您使用的是什么 nuget 包版本?
  • 我的意思是,它会接受 '$skip 和 $top' 并返回一个正确的结果集,但是当我添加 '$select' 时,它仍然会向我发送所有字段,不仅仅是选定的。我正在使用“Microsoft ASP.NET Web API OData”4.0.30506

标签: c# odata asp.net-web-api


【解决方案1】:

Microsoft ASP.NET Web API OData 4.0.30506 包没有$select$expand 支持。要获得 $select$expand 支持,您必须升级到我们最新的软件包之一。 5.0.0-beta2 应该可以工作。或者,您也可以尝试我们的nightly builds 以获取所有最新功能。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2018-09-17
  • 2015-01-22
相关资源
最近更新 更多