2012-06-04 23 views
14

En Web-api de ASP.net MVC4 RC, que tenía una acción Se define como antes:ASP.Net MVC4 RC Web-Api Odata filtro no se trabaja con IQueryable

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

Cuando era yo estaba corriendo se antes si llamaba a una url como: /api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'+and+Zip+eq+'35242')

Haría el filtrado en los objetos, ¿ha cambiado algo desde la versión beta que rompería esto?

+1

Encontré la solución aquí http://forums.asp.net/t/1809900.aspx/1?Web+API+OData+in+RC – Jonathan

+1

Consulte las preguntas más frecuentes (http://stackoverflow.com/faq) Está bien, e incluso animado, responder tu propia pregunta. Incluso puede obtener algunos puntos por hacerlo. – EBarr

+0

Debería entrar y cambiar la respuesta de @ MartinF como la correcta. :) – BrainSlugs83

Respuesta

40

Debe poner el atributo [Queryable] en el método para permitir el filtrado. Las notas de la versión que describen el cambio are here.

Actualización: En RTM parecen haber separado esta característica en su propio ensamblado, por lo que debe incluir una referencia al ensamblado de ASP.NET Web API OData de Microsoft. Puede encontrar la versión más reciente en Nuget https://nuget.org/packages/Microsoft.AspNet.WebApi.OData

Actualización: En la última versión del atributo consultables han cambiado de nombre a EnableQuery. Para obtener más información acerca de los cambios, consulte 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

Esto debería marcarse como la respuesta correcta –

+0

Acabo de intentar y no pude instalar este paquete, falta el paquete de reclamaciones del cliente NuGet PS, pero todavía se ve en el sitio web NuGet .. –

+0

¿Se aseguró de que La opción "Incluir Presentación" fue seleccionada? –

10

Por lo tanto, aparentemente esta característica se ha eliminado del calendario de publicación final. Supongo que eso significa que tendremos que modificar los métodos de acción de WebAPI existentes para incluir los parámetros necesarios de filtrado, ordenación y paginación por ahora. Muy triste de hecho.

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

... Por favor, no me down-votar por ser el portador de malas noticias;)

+0

"planeamos brindar una compatibilidad mucho mejor con OData como una función independiente basada en la biblioteca OData". Parece que no estaban contentos con la implementación actual. – JayC

+3

Vea el otro comentario. Simplemente agregue el atributo [Queryable] y estará listo para continuar. –

Cuestiones relacionadas