ASP.Net MVC4 RC Web-API Odata 过滤器不适用于 IQueryable

本文关键字:过滤器 不适用 适用于 IQueryable Odata Web-API Net MVC4 RC ASP | 更新日期: 2023-09-27 18:36:22

在MVC4 RC的Web-api ASP.net 中,我像以前一样定义了一个Get操作:

public IQueryable<Person> Get()
    {
        var lst = ctx.GetListFromDB();
        return lst.AsQueryable();
    }

当我之前运行它时,如果我调用一个 url,例如: /api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'+and+Zip+eq+'35242')

它会对对象进行过滤,自测试版以来是否有一些变化会破坏这一点?

ASP.Net MVC4 RC Web-API Odata 过滤器不适用于 IQueryable

您必须将 [Queryable] 属性放在方法上以允许筛选。 此处提供了描述此更改的发行说明。

更新:在 RTM 中,他们似乎已将此功能分离到它自己的程序集中,因此您必须包含对Microsoft ASP.NET Web API OData 程序集的引用。您可以在Nuget上找到最新版本https://nuget.org/packages/Microsoft.AspNet.WebApi.OData

更新:在最新版本中,Queryable 属性已重命名为 EnableQuery。有关更改的详细信息,请参阅 http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx

因此,显然此功能已从最终发布计划中删除。我想这意味着我们现在需要修改现有的 WebAPI 操作方法以包含必要的过滤、排序和分页参数。确实很伤心。

http://aspnetwebstack.codeplex.com/SourceControl/changeset/changes/af11adf6b3c5

从我所看到的(9 年 20 月 12 日)来看,您需要 https://nuget.org/packages/Microsoft.AspNet.WebApi.OData/0.1.0-alpha-120815 Nuget 包才能使其正常工作。不幸的是,它仍处于预发布阶段。[可查询] 属性位于此包中。

我还没有找到很好的信息。