c# - OData $select 不适用于 Web API

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

我正在尝试使用 OData 从我的 Web API 返回较小的分页结果集。我正在修改一个大型的现有 API,因此我希望能够仅针对这一个 Controller 和方法执行此操作,最好不使用 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 吗?

最佳答案

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

关于c# - OData $select 不适用于 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617946/

相关文章:

c# - 为什么我应该创建异步 WebAPI 操作而不是同步操作?

c# - Web API OData V4 开放类型 - 如何配置 Controller 和数据上下文

c# - 我应该将 id 还是实体传递到我的服务中

c# - 如何使用 Task 设置最大并发线程数

odata - OData 和存储库模式中的 IEnumerable 与 IQueryable

javascript - oData 扩展查询不适用于 SystemUserRolesSet

sql - 使用odata客户端将中文插入到azure sql

c# - 无法将数据库还原到 SQL Server 中的快照

c# - 读取 web.config 内容的最佳方式

javascript - 即使在 AngularJS 中使用来自 .Net WebApi 的有效 json,$http get 方法也会失败