c# - microsoft - ¿Dónde se aplica WebAPI 2.2 OData v4[EnableQuery]?
odata web api filter (1)
¿Dónde es correcto / incorrecto aplicar el atributo EnableQueryAttribute a partir de enero de 2015?
El documento vinculado a continuación:
Dice:
El atributo [EnableQuery] permite a los clientes modificar la consulta mediante el uso de opciones de consulta como $ filter, $ sort y $ page. Para obtener más información, consulte Compatibilidad con las opciones de consulta de OData.
El siguiente documento vinculado:
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
Dice:
El método EnableQuerySupport habilita las opciones de consulta globalmente para cualquier acción del controlador que devuelva un tipo de IQueryable.
Pero este documento para OData 4 en WebApi 2.2 lo ha puesto en acciones que devuelven IHttpActionResult:
[ODataRoutePrefix("Teams")]
public class TeamsEntitySetController : ODataController
{
private readonly LeageContext _leage = new LeageContext();
[EnableQuery]
[ODataRoute]
public IHttpActionResult GetFeed()
{
return Ok(_leage.Teams);
}
[ODataRoute("({id})")]
[EnableQuery]
public IHttpActionResult GetEntity(int id)
{
return Ok(SingleResult.Create<Team>(_leage.Teams.Where(t => t.Id == id)));
}
}
Me estoy volviendo loco tratando de encontrar documentación actualizada, precisa y consistente sobre OData v4 / WebApi 2.2.
¿Cuál es correcto hoy?
Utilice la configuración global (instancia de un objeto HttpConfiguration) y llame
config.Filters.Add(new EnableQueryAttribute()
{
PageSize = 2
// .. other settings
});
esto funciona