BreezeJS: применение клиентского запроса в контроллере
Есть ли в любом случае применить пользовательский запрос в контроллере, чтобы выполнить некоторые действия для окончательного набора результатов?
Возьмите следующий пример:
[HttpGet]
public IQueryable<Container> Containers(bool populate)
{
var containers = _contextProvider.Context.Containers;
if (populate)
{
foreach (var container in containers)
{
container.Populate(_contextProvider.Context);
}
}
return containers;
}
Проблема в том, что я делаю это Populate()
действие со всеми записями в этой таблице, а не только с теми, которые запрашивал пользователь, поскольку их запрос еще не применен. Как мне этого добиться?
1 ответ
Решение
Вам нужно передать ODataQueryOptions в ваш метод, чтобы вы могли применить их вручную, а не позволять WebApi применять их при выходе.
[HttpGet]
public IQueryable<Container> Containers(ODataQueryOptions options, bool populate)
{
IQueryable<Container> containers = _contextProvider.Context.Containers;
containers = options.ApplyTo(Containers).Cast<Container>();
if (populate)
{
foreach (var container in containers)
{
container.Populate(_contextProvider.Context);
}
}
return containers;
}