2015-04-14 3 views
1

Есть ли способ применить пользовательский запрос в контроллере, чтобы выполнить некоторые действия с окончательным набором результатов?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() действие для всех записей в этой таблице, а не только те, что пользователь запросил, потому что их запрос не был применен еще , Как я могу это достичь?

ответ

2

Вам необходимо получить 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; 
} 
+0

спасибо, что сэр. – kdelmonte

Смежные вопросы