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 memoria

Antes de empezar

  • Un informe tipado de tu MyDinaup y un DinaupClientC conectado. 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 a AddOrder antes. El resultado no tiene orden de presentación.
  • Añade un filtro id > cursor y lo avanza tras cada página. Tus filtros se conservan y se combinan con AND.
  • 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ónExcepción
pageSize o maxRows no positivosArgumentException
El informe no expone columna IDInvalidOperationException
Ya se llamó a AddOrderInvalidOperationException
Ya hay un filtro sobre la columna IDInvalidOperationException
Las filas no implementan IDinaupRowInvalidOperationException
Se alcanza maxRows con filas pendientesInvalidOperationException: reduce el informe con un filtro o sube maxRows

En esta página