Возможно, мне не хватает чего-то простого, но на основании этого сообщения в блоге: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options это должно работать. У меня есть следующий метод контроллера:ODataQueryOptions не применяется
public virtual IQueryable<DtoAgent> Get(ODataQueryOptions<Agent> options, bool includeInactive = false, bool includeDeleted = false)
{
IQueryable<Agent> agents = null;
if (includeDeleted && includeInactive)
{
agents = agentRepository.FindAll();
}
else if (includeDeleted)
{
agents = agentRepository.FindBy(a => a.ussiStatus == "A");
}
else if (includeInactive)
{
agents = agentRepository.FindBy(a => !a.IsDeleted);
}
if (agents == null)
{
agents = agentRepository.FindByExp(a => a.ussiStatus == "A" && !a.IsDeleted);
}
options.ApplyTo(agents);
return agents.ToDtos<DtoAgent>();
}
, когда я называю это как ../api/Agent?$top=10 он возвращает все результаты не только 10. Я могу видеть TopQueryOption в параметрах переменной, но это делает как представляется, не применяются. Он работает, если я использую атрибут [Queryable], но верхняя часть применяется после вызова БД, чего я пытаюсь избежать. Я вызываю EnableQuerySupport на глобальном уровне и устанавливаю как пакет Nuget, так и обновление 2012.2. Спасибо за вашу помощь.
Я подозревал, что много, большое спасибо Youssef! –