Вот моя ситуация: я стараюсь как можно сложнее следовать 3-х уровневому шаблону (то есть презентации, бизнесу и уровню данных). Когда мне нужны данные из БД, бизнес-уровень вызывает уровень данных, который возвращает информацию. Уровень данных никогда не возвращает объект SqlDataReader или DataTable, но часто это перечисление пользовательских объектов, известных на уровне доступа к данным. Это работает очень хорошо, когда слой данных должен возвращать список с несколькими объектами.
Я столкнулся с этой проблемой, мое приложение (бизнес-уровень) должно обработать 500000 записей. Я мог бы просто добавить другой метод в свой слой данных и вернуть IEnumerable, но для меня это звучит очень плохо. Я не хочу загружать полмиллиона записей в память.
Мой вопрос, учитывая трехуровневую модель, как мне справиться с этим делом? Если бы у меня не было 3-уровневого шаблона, я бы просто использовал SqlDataReader в своих бизнес-классах. Есть предложения?
ОБНОВЛЕНИЕ : данные не будут отображаться, поэтому это не проблема подкачки страниц (уровень представления здесь вообще не задействован). Мне просто нужно проанализировать каждую запись, а затем сохранить некоторые из них.
Спасибо