Unit of Work en C#: Guía Completa

Introducción: Cambios coherentes

Unit of Work coordina cambios a múltiples entidades en una transacción. Cambias orden, producto, inventario. Todo o nada. Sin UoW: cada cambio es transacción separada (inconsistencia). Con UoW: todos atómicos. EF Core tiene UnitOfWork implícito (DbContext). Implementa manualmente si necesitas control fino.

Unit of Work
Prompt: Unit of work transaction boundary, clean minimal style.

1. Naturaleza: Lista de tareas

Antes de salir, haces una lista de tareas y luego las ejecutas juntas.

Unit of Work acumula cambios y los aplica en bloque.

Tareas
Prompt: Task checklist completion, soft illustration.

2. Mundo Real: Pedido con múltiples cambios

Crear un pedido implica actualizar stock, guardar el pedido y registrar un pago.

Unit of Work asegura que todo se confirme o todo se revierta.

Pedido
Prompt: Order transaction steps, clean flat style.

3. Implementación en C#: Código Paso a Paso

public interface IUnitOfWork { Task CommitAsync(); }

public class UnitOfWork : IUnitOfWork
{
    public Task CommitAsync() { /* guardar cambios */ return Task.CompletedTask; }
}

En la práctica, el Unit of Work registra cambios y ejecuta un commit único.

Combina con Repository para mantener el dominio limpio.

4. Unit of Work vs Transacciones manuales

Las transacciones manuales son repetitivas y propensas a errores.

Unit of Work centraliza la lógica y garantiza consistencia en todo el caso de uso.

5. Diagrama UML

UML Unit of Work
Prompt: UML diagram of unit of work, clean vector layout.
Flujo Unit of Work
Prompt: Unit of work commit flow, minimal infographic style.

⚠️ Cuándo NO Usar Unit of Work

  • Si los cambios son simples y aislados.
  • Si no necesitas transacciones coherentes.
  • Si el costo de implementación es mayor que el beneficio.

💪 Ejercicio

Implementa un Unit of Work que agrupe cambios en pedidos y stock.

Conclusión

Unit of Work aporta coherencia y simplicidad en operaciones multi-entidad.

Es clave cuando necesitas transacciones limpias y controladas.