2012-06-11 2 views
1

Я хочу показать огромные данные в виде сетки без подкачки, но предоставив опцию «загрузить больше», чтобы получить следующую страницу и сохранить предыдущую.Как реализовать нагрузку по требованию в ADO.Net?

Как реализовать эту функцию с использованием компонентов EF или ADO.Net?

Я думаю, что .Skipe, .Take методы в L2SQL или EF не поможет, потому что они будут повторно выполнить запрос каждый нагрузки запрос. Но то, что я хочу реализовать, похоже на открытый DataReader, который сохраняет результат независимо от того, что происходит в базе данных (добавление/удаление записей). Единственная проблема в DataReader заключается в том, что он не должен оставаться открытым.

Какой стандартный способ?

ответ

1

Стандартным способом является использование Skip/Take и повторная передача запроса для каждого загруженного сегмента. Это решение легко и, что более важно, без гражданства. Вы, конечно же, не хотите поддерживать открытое соединение/команду/запрос дольше, чем требуется для выполнения текущего HTTP-запроса. Это анти-шаблон, потому что приложение становится устаревшим и хрупким.

Если запрос стоит очень дорого, подумайте о сохранении первых 5 страниц или около того в новой таблице, созданной для этой цели, чтобы вы могли быстро их восстановить.

1

Обычный пейджинг также заново выполнит запрос, поэтому я не думаю, что это имеет значение.

Ваших только два варианта либо сделать какое-то пейджинг (пропуск/взятие является прекрасной реализацией, что, хотя фактическая пейджинга может иметь перфорацию преимущества)

или

Сохранить все это в DataTable или что нибудь. Вы не получаете каких-либо первоочередных преимуществ подкачки таким образом, но вы предоставляете пользователю возможность загружать только несколько записей за раз, что может быть хорошим бонусом к юзабилити.

+0

Что такое «фактический пейджинг»? Пропустить и принять перевод на SQL. – usr

Смежные вопросы