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;
}
Другие вопросы по тегам