Услуги .Net RIA: несколько загрузок для одного обратного вызова - PullRequest
2 голосов
/ 18 апреля 2011

Я обнаружил, что довольно часто случается так, что у меня есть несколько запросов / сущностей, которые я хочу загрузить в RIA Services, которые все связаны, и один обратный вызов, который обрабатывает данные после того, как все нагрузки завершены. Однако я не вижу простого и простого способа сделать это с помощью RIA Services без добавления моего собственного стандартного кода для подсчета обратных вызовов (как если бы у меня было три загрузки, тогда в обратном вызове есть переменная класса, которая увеличивается и возвращает, если по-прежнему <3) или путем объединения нагрузок, что приводит к потере времени, поскольку вызовы загрузки могут быть одновременными. </p>

Я начинаю думать, что мой лучший вариант - создать отдельный, многократно используемый класс, называемый «LoadGroup», который принимает несколько запросов на загрузку и функцию обратного вызова и вызывает обратный вызов только после завершения всех загрузок. Мой вопрос: я заново изобретаю колесо здесь? Есть ли функциональность RIA Services, которая уже в основном делает это (или шаблон дизайна лучше, чем тот, который я предлагаю)? Или я должен продолжать свой план написания своего собственного маленького класса?

Спасибо

-Роберт

1 Ответ

1 голос
/ 18 апреля 2011

Механизм сцепления отсутствует, поэтому вы можете настроить основной обработчик как обычный маршрут.Еще один способ сделать это - просто представить модель через Invoke, которая инкапсулирует все вызовы в один результат, так что три вызова:

IQueryable<SomeType1> GetSomeType1()
{
}

IQueryable<SomeType2> GetSomeType2()
{
}

IQueryable<SomeType2> GetSomeType2()
{
}

могут быть возвращены как (mock class)

public class SomeModel()
{
   public List<SomeType1> FirstCall()
   public List<SomeType2> SecondCall()
   public List<SomeType3> ThirdCall()
}

Выставляется как Invoke:

[Invoke]
    public SomeModel GetMultiple( IQueryable<SomeType1> first, IQueryable<SomeType2> second, IQueryable<SomeType3> third )
...