частичная загрузка объекта и управление в Silverlight / wcf устье реки

У меня есть приложение Silverlight 4, которое раскрывает объекты от базы данных с помощью WCF сервисы RIA. Эти объекты данных довольно просты, всего несколько полей, но одно из тех полей содержит двоичные данные произвольно размер. Для приложения нужен доступ к этим данным в основном как можно скорее после того, как пользователь вошел в систему, чтобы отобразиться в списке, включить выбор и т.д.

Моя проблема из-за размера этих данных, время загрузки не приемлемо и может приблизиться к тайм-ауту по умолчанию сервиса RIA.

Я хотел бы так или иначе частично загрузка объекты в мой локальный контекст данных так, чтобы у меня были идентификаторы, имена и т.д., но не двоичные данные. Я мог затем позже (т.е. когда это на самом деле необходимо), заполняют двоичные поля тех объектов, которые я должен отобразить.

Любые предложения о том, как выполнить это, приветствовались бы.

Другой подход, который произошел со мной при записи этого вопроса (как часто это происходит?!) то, что я мог переместить двоичные данные в отдельную таблицу базы данных, соединенную с исходной записью 1:1, который позволит мне использовать ленивую загрузку RIA на этом двоичные данные.

снова.. приветствующиеся комментарии!Спасибо.

5
задан Dan Wray 16 April 2010 в 13:08
поделиться

1 ответ

Не меняйте базу данных. Измените способ доставки.

Создайте отдельную службу WCF RIA для быстрого списка элементов и используйте POCO (простой старый объект clr) для отправки сводки необходимых данных. Затем, когда вы будете готовы к большому успеху, вы можете загружать по одному, основываясь на данных из вашего POCO.

Брэд Абрамс и Нихил Котари некоторое время говорили об использовании POCO. Посмотрите их выступления MIX для получения дополнительной информации.

Создайте новую службу для элементов быстрого списка:

public class QuickListService : LinqToEntitiesDomainService<MyEntities> 
{
    private IQueryable<QuickList> GetQuickList() 
    {
        return from t in ObjectContext.Table
              select new QuickList 
               {
                      ID = t.ID,
                     Title = t.Title
              };
    }
}

POCO - это просто объект на сервере, например:

public class QuickList
{
    public string Title;
    public long ID;
}

Удачи!

п.с. Приложение Nikhil's BookClub делает это очень часто. Если вам нужно увидеть, как это делает реальное приложение, загрузите его приложение: http://www.nikhilk.net/Content/Presentations/MIX10/BookClub.zip

5
ответ дан 14 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: