14

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

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

如果我调用如下网址,那么我之前正在运行它: /api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'+and+Zip+eq+'35242')

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

4

3 回答 3

41

您必须将 [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

于 2012-06-11T02:44:00.707 回答
10

所以,显然这个功能已经从最终的发布时间表中删除了。我想这意味着我们现在需要修改现有的 WebAPI 操作方法以包含必要的过滤、排序和分页参数。确实非常可悲。

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

...请不要因为我是坏消息的承担者而对我投反对票;)

于 2012-07-05T17:47:00.370 回答
1

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

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

于 2012-09-20T17:02:13.933 回答