Проблема умного подкачки с RiaServices и entityQuery.IncludeTotalCount при фильтрации - PullRequest
2 голосов
/ 30 сентября 2010

Я использую RiaServices для заполнения сетки с помощью EntityQuery.

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

Пример: всего 100 строк

entityQuery.Skip(0).Take(10); //for the first page
entityQuery.IncludeTotalCount = true;

Это приносит мне 10 строк, и loadOperation.TotalEntityCount = 100. Отлично.

Но представьте себе:

Пример: всего 100 строк

entityQuery.Where(p => Id >= 1 && p.Id <= 50).Skip(0).Take(10); //with filter now
entityQuery.IncludeTotalCount = true;

Это приносит мне 10 строк, и loadOperation.TotalEntityCount = 100 (мне нужно 50!)

Вот проблема: дляДля целей подкачки мне нужно общее число объектов, удовлетворяющих моему фильтру, а не все.

Можно ли изменить запрос на "IncludeTotalCount" или я должен забыть о TotalEntityCount и запросить у сервера двараз?

Ура,

Андре Карлуччи

1 Ответ

1 голос
/ 30 сентября 2010

Службы RIA обрабатывают запросы на общее количество, удаляя директивы пропуска / приема (как и следовало ожидать) и передавая невыгружаемый запрос в защищенный виртуальный метод DomainService.Count.Я рекомендую переопределить этот метод, установив точку останова, чтобы вы могли убедиться, что правильный запрос подсчета передается вашей службе.Если вы используете EF DomainService, базовая реализация Count просто выполнит query.Count ().Так что все должно вести себя так, как вы ожидаете - я пока не уверен, почему это не так.Какой тип DomainService вы используете?

...