У меня есть модель просмотра в Silverlight, которая загружает контакты, т.е.
_ContactsSource = new EntityList<ContactItem>(_ContactsDomainContext.ContactItems);
_ContactsLoader = new DomainCollectionViewLoader<ContactItem>(LoadCurrentCategoryContacts, LoadContactsCompleted);
_ContactsView = new DomainCollectionView<ContactItem>(_ContactsLoader, _ContactsSource);
public LoadOperation<ContactItem> LoadCurrentCategoryContacts()
{
var query = _ContactsDomainContext.GetContactsByCategoryIdQuery(CurrentContactCategory.Id);
query.IncludeTotalCount = true;
var op = _ContactsDomainContext.Load(query.SortAndPageBy(_ContactsView));
return op;
}
public void LoadContactsCompleted(LoadOperation<ContactItem> op)
{
if (op.HasError)
op.MarkErrorAsHandled();
else if (!op.IsCanceled)
{
_ContactsSource.Source = op.Entities;
if (op.TotalEntityCount > -1)
_ContactsView.SetTotalItemCount(op.TotalEntityCount);
}
}
и доменный сервис с методом, который возвращает контакты DTO в зависимости от их категории:
public IQueryable<ContactItem> GetContactsByCategoryId(int categoryId)
{
List<ContactItem> result = new List<ContactItem>();
Mapper.Map(_contactRepository.GetAll(x => x.ContactCategoryId == categoryId), result); //automapper
return result.AsQueryable();
}
вопрос такой:
каждый раз, когда доменная служба используется, она получает все строки таблицы из базы данных (т. е. для _ContactsView PageSize установлено значение 10, в результате «return result.AsQueryable ();» будет иметь 140 элементов), но отображаются только 10 элементов. 1007 *
Каков наилучший способ использования DomainCollectionView с шаблоном wcf ria service + repository, чтобы вся фильтрация и подкачка страниц выполнялись на стороне сервера, и только Silverlight возвращал только необходимый объем данных?
Спасибо!