在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')
它会对对象进行过滤,自beta以来会有什么变化会破坏它吗?
答案 0 :(得分:41)
您必须在方法上放置[Queryable]属性以允许过滤。发行说明描述了变更are here。
更新: 在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
答案 1 :(得分:10)
因此,显然此功能已从最终发布计划中删除。我想这意味着我们现在需要修改现有的WebAPI操作方法,以包含必要的过滤,排序和分页参数。确实非常难过。
http://aspnetwebstack.codeplex.com/SourceControl/changeset/changes/af11adf6b3c5
...请不要因为担任坏消息而拒绝投票;)
答案 2 :(得分:1)
从我所看到的(2012年9月20日),您需要https://nuget.org/packages/Microsoft.AspNet.WebApi.OData/0.1.0-alpha-120815 Nuget包来实现此功能。不幸的是,它仍处于预发布阶段。 [Queryable]属性在此包中。
我没有找到关于此的非常好的信息。