WebAPI 2.2 OData v4 [EnableQuery] 在哪里适用
本文关键字:在哪里 OData v4 WebAPI EnableQuery | 更新日期: 2023-09-27 18:36:50
自
2015 年 1 月起,在哪里应用 EnableQueryAttribute 是正确的/不正确的?
链接如下的文档:
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint
说:
[EnableQuery] 属性使客户端能够使用查询选项(如$filter、$sort和$page)修改查询。有关详细信息,请参阅支持 OData 查询选项。
以下链接的文档:
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
说:
方法为返回 IQueryable 类型的任何控制器操作全局启用查询选项。
但是这个关于 WebApi 2.2 上的 OData 4 的文档已经把它放在返回 IHttpActionResult 的操作上:
http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx
[ODataRoutePrefix("Teams")]
public class TeamsEntitySetController : ODataController
{
private readonly LeageContext _leage = new LeageContext();
[EnableQuery]
[ODataRoute]
public IHttpActionResult GetFeed()
{
return Ok(_leage.Teams);
}
[ODataRoute("({id})")]
[EnableQuery]
public IHttpActionResult GetEntity(int id)
{
return Ok(SingleResult.Create<Team>(_leage.Teams.Where(t => t.Id == id)));
}
}
我快要疯了,试图在OData v4/WebApi 2.2上找到最新,准确和一致的文档。
今天哪个是正确的?
使用全局配置(HttpConfiguration 对象的实例)并调用
config.Filters.Add(new EnableQueryAttribute()
{
PageSize = 2
// .. other settings
});
这行得通