RIA-пейджинг с пользовательским уровнем данных - PullRequest
0 голосов
/ 19 августа 2010

Мы используем пользовательский слой доступа к данным для чтения наших объектов домена (клиентов, заказов и т. Д.) Из базы данных.Этот уровень доступа к данным не поддерживает разбиение на страницы или сортировку.

Мы хотим опубликовать части данных (например, клиентов) на клиенте Silverlight, используя службы WCF RIA.В клиенте мы хотим отобразить сетку данных с подкачкой.

Теперь в нашей RIA DomainService у нас будет такая функция, как

IQueryable<Customer> GetCustomers()
{
   List<Customer> customers = OurPersisteceLayer.GetAllCustomers();
   return customers.AsQueryable()
}

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

Мои вопросы:

Будет ли RIA кэшироватьсписок клиентов в клиенте (и вызывать GetCustomers только один раз), или он будет выполнять операцию каждый раз, когда пользователь переходит на следующую страницу в сетке данных?

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

Есть ли какое-нибудь хорошее решение / шаблон / метод, который можно использовать при использовании RIA для доступа к устаревшему уровню доступа к данным, и вы хотите использовать пейджинг?

1 Ответ

0 голосов
/ 19 августа 2010

Я предполагаю, что вы используете DomainDataSource на стороне клиента для подкачки страниц. По сути, это просто вызовы Skip и Take в IQueryable. Так что я догадываюсь, что с каждым звонком на GetCustomers вы всегда получаете всех клиентов, что при каждой операции страницы вы будете получать всех клиентов каждый раз. DDS предполагает, что его вызов Skip и Take будет скомпонован в запрос LINQ и, в конечном счете, сделан на самом источнике данных.

...