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>();
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
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.
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.