Saltar al contenido principal

WriteOperations por Lotes

La escritura por lotes permite insertar o actualizar multiples registros en una seccion Dinaup en una sola llamada. Mejora el rendimiento y reduce la cantidad de operaciones API.

Pasos

1. Crear la lista de WriteOperations

var bulkOperations = new List<WriteOperation>();
aviso

Todos los WriteOperations de un lote deben tener las mismas columnas (keys del diccionario).

2. Agregar operaciones

Cada WriteOperation recibe un ID (vacio para crear, existente para actualizar) y un diccionario con los campos:

for (int i = 1; i <= 5; i++)
{
var itemData = new Dictionary<string, string>
{
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.Resumen, $"Tarea #{i}" },
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.TextoPrincipal, $"Contenido para la tarea {i}" },
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.Prioridad, (i % 3).ToString() }
};

bulkOperations.Add(new WriteOperation(string.Empty, itemData));
}

3. Ejecutar el lote

var sectionId = MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES._SectionID;

var result = await dinaupClient.RunWriteOperationAsync(
dinaupClient.DefaultSession, sectionId, bulkOperations, true);
result.EnsureSuccess();

Ejemplo completo

var bulkOperations = new List<WriteOperation>();

for (int i = 1; i <= 5; i++)
{
var itemData = new Dictionary<string, string>
{
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.Resumen, $"Tarea #{i}" },
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.TextoPrincipal, $"Contenido para la tarea {i}" },
{ MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES.Prioridad, (i % 3).ToString() }
};

bulkOperations.Add(new WriteOperation(string.Empty, itemData));
}

var sectionId = MyDinaup.SectionsD.TareasDeProyectosD.TareasDeProyectosES._SectionID;

var result = await dinaupClient.RunWriteOperationAsync(
dinaupClient.DefaultSession, sectionId, bulkOperations, true);
result.EnsureSuccess(); // lanza excepcion si algo falla
info

El parametro true en RunWriteOperationAsync activa la ejecucion de scripts DinaScript asociados a la seccion. Usa false para omitirlos y mejorar el rendimiento en importaciones masivas.

info

EnsureSuccess() lanza una excepcion si alguna operacion del lote falla (validaciones, permisos, etc.). Revisa el resultado individual de cada operacion si necesitas manejo granular de errores.