2012-06-04 12 views
14

In Web-API ASP.net MVC4 RC, ho avuto un'azione Get definita come prima:ASP.Net MVC4 RC Web-Api odata filtro non si lavora con IQueryable

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

Quando fu stavo correndo esso prima se ho chiamato un url come: /api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'+and+Zip+eq+'35242')

Farebbe il filtraggio sugli oggetti, qualcosa è cambiato dalla beta che avrebbe rotto questo?

+1

Ho trovato la soluzione qui http://forums.asp.net/t/1809900.aspx/1?Web+API+OData+in+RC – Jonathan

+1

Controlla le FAQ (http://stackoverflow.com/faq). Va bene, e anche incoraggiato, rispondere alla tua stessa domanda. Potresti anche ottenere dei punti per farlo. – EBarr

+0

Dovresti davvero entrare e cambiare la risposta di @ MartinF come quella corretta. :) – BrainSlugs83

risposta

40

Devi mettere l'attributo [Queryable] sul metodo per consentire il filtraggio. Le note di rilascio che descrivono la modifica are here.

Aggiornamento: In RTM sembra che questa funzione sia stata separata in un proprio assieme, quindi è necessario includere un riferimento all'assembly OData Web API ASP.NET di Microsoft. È possibile trovare l'ultima versione sul Nuget https://nuget.org/packages/Microsoft.AspNet.WebApi.OData

Aggiornamento: Nell'ultima versione l'attributo Queryable sono stati rinominati a EnableQuery. Per ulteriori informazioni sulle modifiche, vedere 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

Questa dovrebbe essere contrassegnata come risposta corretta –

+0

Ho appena provato e non ho potuto installare questo pacchetto, manca il pacchetto di richieste del client NuGet PS, ma è ancora visibile sul sito Web NuGet .. –

+0

Ti sei assicurato che il L'opzione "Includi Prerelease" è stata selezionata? –

10

Quindi, apparentemente questa funzione è stata rimossa dal programma di rilascio finale. Immagino che questo significhi che avremo bisogno di modificare i metodi di azione WebAPI esistenti per includere i parametri necessari per il filtraggio, l'ordinamento e il paging per ora. Davvero molto triste.

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

... Per favore, non me down-voto per essere stato il portatore di cattive notizie;)

+0

"intendiamo fornire un supporto OData molto migliore come funzionalità separata basata sulla libreria OData." sembra che non fossero contenti dell'attuale implementazione. – JayC

+3

Vedere l'altro commento. Basta aggiungere l'attributo [Queryable] e sei a posto. –

Problemi correlati