Есть ли поисковое решение для 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 с большим количеством данных
Легко