Мое приложение объединяет данные из других баз данных для целей отчетности. Мы не можем связать базы данных, поэтому вся обработка данных должна выполняться в коде - это хорошо, так как мы хотим разрешить ручную проверку во время импорта.
Некоторые пользователи смогут запускать обновление через интерфейс Silverlight 4.
У меня есть 3 таблицы в базе данных x, которые питаются от одной модели EF4 (ModelX). Я хочу объединить эти таблицы вместе, выбрать конкретные столбцы и вернуть результат в виде новой сущности, существующей в другой модели EF4 (ModelY). Я использую этот запрос:
var myQuery = from i in DBx.table1 from it in DBx.table2 from h in DBx.table3 where (i.id==it.id && h.otherid == i.otherid) select new ModelYServer {Name = i.name,Thing = it.thing, Stuff = h.stuff};
Я застрял в том, как выполнить этот запрос и дождаться завершения асинхронного вызова. Обычно я бы использовал:
DomainContext.Load<T>(myQuery).Completed += (sender,args) =>
{List<T> myList = ((LoadOperation<T>)sender.Entities.ToList();};
но я не могу передать myQuery (IEnumerable) в DomainContext.Load (), поскольку это ожидает EntityQuery. Набор данных очень большой, и для его возврата может потребоваться до 30 секунд, поэтому мне определенно нужно подождать, прежде чем продолжить.
Так может кто-нибудь сказать мне, как я могу дождаться завершения запроса IEnumerable, или предложить лучший способ сделать это (очень вероятно, что он есть).
Спасибо
Мик