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