【问题标题】:Where does WebAPI 2.2 OData v4 [EnableQuery] apply?WebAPI 2.2 OData v4 [EnableQuery] 适用于何处?
【发布时间】:2015-03-07 19:11:33
【问题描述】:

截至 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 的最新、准确和一致的文档。

今天哪个是正确的?

【问题讨论】:

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


    【解决方案1】:

    使用全局配置(HttpConfiguration 对象的实例)并调用

    config.Filters.Add(new EnableQueryAttribute()
                {
                    PageSize = 2
                    // .. other settings
                });
    

    这行得通

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2015-11-06
      • 2012-10-09
      • 1970-01-01
      • 2015-08-13
      • 2014-07-26
      相关资源
      最近更新 更多