Aquí está mi situación: estoy tratando de seguir lo más posible el patrón de 3 niveles (es decir, presentación, negocio y capa de datos). Cuando necesito datos de la base de datos, la capa empresarial llama a la capa de datos que devuelve la información. La capa de datos nunca devuelve un objeto SqlDataReader o DataTable, pero a menudo una enumeración de un objeto personalizado conocido por la capa de acceso a datos. Funciona bastante bien cuando la capa de Datos tiene que devolver una lista con pocos objetos.patrón de 3 niveles y grandes cantidades de datos
Ahora me enfrento a este problema, mi aplicación (la capa de negocios) debe procesar 500000 registros. Podría simplemente agregar otro método a mi capa de datos y devolver un IEnumerable, pero esto me parece muy malo. No quiero cargar medio millón de registros en la memoria.
Mi pregunta es, teniendo en cuenta el modelo de 3 niveles, ¿cómo debo manejar este caso? Si no tuviera un patrón de 3 niveles, simplemente usaría SqlDataReader en mis clases de negocios. ¿Alguna sugerencia?
ACTUALIZACIÓN: No se mostrarán los datos, por lo que este no es un problema de búsqueda (aquí la capa de presentación no está involucrada en absoluto). Simplemente tengo que analizar cada registro y luego conservar algunos de ellos.
Gracias