Загрузка результатов запроса WCF RIA Services в ObservableCollection - PullRequest
3 голосов
/ 12 ноября 2010

В моем приложении Silverlight после создания модели данных сущностей ADO.NET и класса обслуживания домена RIA Services WCF в соответствующем классе ProductService у меня есть операция запроса, которая возвращает клиенту коллекцию сущностей Product следующим образом:

public IQueryable<Product> GetProducts()
{
   return this.ObjectContext.Products;
}

Теперь я пытаюсь прочитать его в клиентском приложении Silverlight и загрузить результаты в ObservableCollection:

ProductContext pcontext = new ProductContext();
ObservableCollection<Prod> prAvs = pcontext.GetProductsQuery();

Но получаю сообщение об ошибке:

Невозможно неявное преобразованиевведите System.ServiceModel.DomainServices.Client.EntityQuery<MyTestApp.Web.Product> до System.Collections.ObjectModel.ObservableCollection<MyTestApp.Prod>

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 12 ноября 2010

Первая проблема:

Вы должны использовать класс Products на стороне клиента, сгенерированный для вас службами RIA, а не другой класс, который вы определяете сами.

например, у вас должна быть коллекция объектов MyTestApp.Web.Product, а не объектов MyTestApp.Prod.

Вы найдете сгенерированный контекст домена в скрытой папке Generated_Code в вашем клиентском проекте. В нем будет файл MyTestApp.Web.g.cs, содержащий контекст на стороне клиента и любые объекты данных (например, MyTestApp.Web.Product).

Второй выпуск:

Вы не можете просто привести запрос к коллекции.

Вам нужно использовать запрос для загрузки набора изменений объекта.

var loadOperation = pcontext.Load(pcontext.GetProductsQuery());

Результатом (когда загрузка завершается) является набор сущностей в возвращенном объекте loadOperation. Вы можете использовать коллекцию сущностей немедленно, но изначально она пуста.

...