WebAPI 2.2 OData v4 [EnableQuery] 应用在哪里?

20

截至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

说: EnableQuerySupport方法在返回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的最新、准确和一致的文档。

今天哪个是正确的?

1个回答

9
使用全局配置(一个 HttpConfiguration 对象实例)并调用:
config.Filters.Add(new EnableQueryAttribute()
            {
                PageSize = 2
                // .. other settings
            });

这个有效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接