2012-06-04 61 views
14

工作在ASP.net MVC4 RC的Web-API,我有一個像以前定義的獲取動作:ASP.Net MVC4 RC網絡的API的OData過濾掉不與IQueryable的

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會打破這個對象,會有什麼改變?

+1

我在這裏找到了解決方案http://forums.asp.net/t/1809900.aspx/1?Web+API+OData+in+RC – Jonathan

+1

查看FAQ(http://stackoverflow.com/faq) )。沒問題,甚至鼓勵,回答你自己的問題。你甚至可以得到一些積分。 – EBarr

+0

你應該真的進去把@ MartinF的答案改爲正確的答案。 :) – BrainSlugs83

回答

40

您必須將[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

+2

這應該被標記爲正確的答案 –

+0

我剛剛嘗試過,並且無法安裝此軟件包,NuGet PS客戶端聲明軟件包丟失,但仍在NuGet網站上看​​到。 –

+0

您是否確定「包括預售」選項被選中? –

10

因此,顯然此功能已從最終發佈計劃中刪除。我想這意味着我們現在需要修改現有的WebAPI操作方法,以包含必要的過濾,排序和分頁參數。確實很傷心。

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

...請不要反對票,我來的壞消息;)

+0

「我們計劃提供更好的OData支持作爲基於OData庫的獨立功能。」聽起來他們對目前的實施感到不滿。 – JayC

+3

查看其他評論。只需添加[Queryable]屬性即可。 –