Я также в настоящее время работаю над приложением WPF, которое использует SQL Server CE в качестве механизма сохранения. У нас есть несколько (более 40) таблиц, и некоторые из них довольно большие (50 тыс. Записей, по крайней мере, по моим меркам).
Мой совет относительно подкачки данных непосредственно в SQL CE таков: избегайте, если можете! Я использовал подход, описанный Бобом Кингом, и по крайней мере для меня он привел к Очень Уродливому коду, реальному кошмару обслуживания.
Если вам не понадобится пролистывать десятки тысяч записей, я считаю, что лучший способ - загрузить их все, используя SqlCeDataReader , в коллекцию пользовательских классов, а затем пролистать коллекцию в памяти. Я обнаружил, что этот подход более отзывчив, чем повторное выполнение SQL-запроса каждый раз, даже с кэшированием. Случилось так, что в моем случае запросы были довольно сложными, и производительность SqlCeDataReader была достаточно хорошей, так что снижение производительности было практически незаметным. Нет необходимости указывать, что после первой пакетной загрузки каждое изменение страницы происходит практически мгновенно, поскольку все хранится в памяти.
Общее мнение моих пользователей состояло в том, что нормально дождаться появления первых результатов, если это впоследствии приведет к более быстрой подкачке страниц. А с помощью LINQ пейджинг так же прост, как и вызов методов Skip и Take. Я реализовал эту логику в классе Pager , сделав его очень СУХИМ и приятным.