LoadAllRowsAsync
Método de DinaupReportBase que vuelca un informe completo paginando por id, para exportar, reprocesar o sincronizar todas sus filas.
LoadAllRowsAsync devuelve todas las filas de un informe, sin filas repetidas ni saltadas y al mismo coste en cada página. Pagina por id en vez de por número de página.
var report = new APISeccionDePruebasAPIC();
var todas = await report.LoadAllRowsAsync(dinaupClient, pageSize: 10000, adminMode: true);
var porFecha = todas.OrderBy(r => r.Fecha).ToList(); // el orden de presentación, en memoriaAntes de empezar
- Un informe tipado de tu MyDinaup y un
DinaupClientCconectado. Ver Cliente Dinaup. - El informe tiene que exponer la columna
ID. Los de MyDinaup la traen.
Cómo recorre el informe
Task<List<T>> LoadAllRowsAsync(
DinaupClientC dinaupClient,
int pageSize = 10000,
int maxRows = 50000000,
bool adminMode = false)- Ordena por la columna
ID: no llames aAddOrderantes. El resultado no tiene orden de presentación. - Añade un filtro
id > cursory lo avanza tras cada página. Tus filtros se conservan y se combinan conAND. - Para cuando una página vuelve más corta o el cursor no avanza.
- No pide el recuento al servidor, así que no le afecta que no llegue a tiempo.
- Es para exportar y procesar por lotes. Para una página visible, usa
ExecuteQueryAsync; para una sección entera a CSV, ExportAsync; para volumen diario, la réplica de PG Sync.
Límites y excepciones
Lanza excepción cuando no puede garantizar un recorrido correcto:
| Condición | Excepción |
|---|---|
pageSize o maxRows no positivos | ArgumentException |
El informe no expone columna ID | InvalidOperationException |
Ya se llamó a AddOrder | InvalidOperationException |
Ya hay un filtro sobre la columna ID | InvalidOperationException |
Las filas no implementan IDinaupRow | InvalidOperationException |
Se alcanza maxRows con filas pendientes | InvalidOperationException: reduce el informe con un filtro o sube maxRows |