Есть ли поисковое решение для ASP.NET MVC, которое выполняет подкачку в базе данных?

Большинство ASP.NET MVC-пейджинговых решений, которые я нашел в googling, выглядят так, как будто они получают все строки из таблицы базы данных в виде коллекции IEnumerable, выполняют некоторое преобразование подкачки в коллекции IEnumerable и затем возвращают результаты в вид. Я хочу, чтобы иметь возможность страницы на стороне БД, но все еще есть некоторый класс подкачки, чтобы выполнять вычисления номера страниц и генерации HTML. Есть ли решение, которое делает это? Или те, которые я смотрел на это, но я не вижу этого, потому что я смотрю на них неправильно?

вот что я смотрел:

Ответы

Ответ 1

Посмотрите на образец Gu Nerdinner.

var upcomingDinners = dinnerRepository.FindUpcomingDinners();  
var paginatedDinners = upcomingDinners.Skip(10).Take(20).ToList(); 

Несмотря на то, что FindUpcomingDinners() получает все предстоящие обеды, запрос не выполняется в базе данных, пока вы не вызовете ToList() в следующей строке. И это после того, как вы пропустите 10 строк и получите только следующее 20.

Ответ 2

Ты ошибаешься. PagedList сделает это на сервере БД, так как он имеет расширения IQueryable.

Ответ 3

ScottGu имеет очень приятную многостраничную серию блога по использованию LINQ в Asp.Net(включая MVC). Я рекомендую прочитать всю серию, начиная с Части 1, но Часть 3 охватывает экстенсивно то, что вы ищете - раздел под названием "Paging our Query Results" специально относится к поисковому вызову в базе данных.

Ответ 4

не было бы более эффективным реализовать хранимую процедуру, которая принимает параметры @StartPage и @PageSize?

таким образом вы только извлекаете подмножество данных, которые фактически используются

просто имеет параметр out, называемый totalCount, или что-то подобное, чтобы вы знали, сколько ссылок на страницы должно быть создано, и каждая ссылка onclick событие передаст номер страницы функции javascript, которая будет асинхронно загружать div или другой элемент HTML с большим количеством данных

Легко