2012-06-04 6 views
14

In ASP.net MVC4 RC Web-api arbeiten, hatte ich eine Aktion Get definiert wie vor:ASP.Net MVC4 RC Web-Api OData Filter nicht mit IQueryable

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

Wenn ich es war, es lief vor wenn ich eine URL wie: /api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'+and+Zip+eq+'35242')

Es würde die Filterung auf die Objekte tun, hat sich etwas seit der Beta geändert, die das brechen würde?

+1

Ich fand die Lösung hier http://forums.asp.net/t/1809900.aspx/1?Web+API+OData+in+RC – Jonathan

+1

Schauen Sie sich die FAQ (http://stackoverflow.com/faq). Es ist in Ordnung und sogar ermutigt, Ihre eigene Frage zu beantworten. Sie könnten sogar einige Punkte dafür bekommen. – EBarr

+0

Sie sollten wirklich gehen und @ MartinF Antwort als die richtige ändern. :) – BrainSlugs83

Antwort

40

Sie müssen das Attribut [Queryable] in die Methode einfügen, um die Filterung zuzulassen. Die Versionshinweise beschreiben die Änderung are here.

Aktualisierung: In RTM scheint diese Feature in eine eigene Assembly getrennt zu haben, so dass Sie einen Verweis auf die OData-Assembly der ASP.NET-Web-API von Microsoft einschließen müssen. Sie können die neueste Version auf Nuget https://nuget.org/packages/Microsoft.AspNet.WebApi.OData

Update gefunden: In der neuesten Version der Abfragbare Attribut EnableQuery umbenannt wurden. Weitere Informationen über Änderungen finden Sie unter 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

Dies sollte als die richtige Antwort gekennzeichnet werden –

+0

Ich habe gerade versucht und war nicht in der Lage, dieses Paket zu installieren, NuGet PS Client Ansprüche Paket fehlt, aber es immer noch auf NuGet Website gesehen .. –

+0

Haben Sie dafür gesorgt, dass die Die Option "Prerelease einbeziehen" wurde ausgewählt? –

10

Also wurde diese Funktion offenbar aus dem endgültigen Veröffentlichungsplan entfernt. Ich denke, das bedeutet, dass wir bestehende WebAPI-Aktionsmethoden modifizieren müssen, um die notwendigen Filter-, Sortier- und Paging-Parameter für jetzt zu enthalten. Sehr traurig in der Tat.

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

... Bitte nicht nach unten stimmen mich für die Überbringer schlechter Nachrichten zu sein;)

+0

"Wir planen, eine wesentlich bessere OData-Unterstützung als separates Feature auf Basis der OData-Bibliothek bereitzustellen." klingt, als wären sie mit der aktuellen Implementierung unzufrieden. – JayC

+3

Siehe den anderen Kommentar. Fügen Sie einfach das Attribut [Queryable] hinzu und Sie können loslegen. –

Verwandte Themen