Manejo de Transacciones y Rollback en Entity Framework Core
Para hacer un rollback en la base de datos cuando usas SaveAsync() (por ejemplo, con Entity Framework Core), necesitas envolver la operación en una transacción. Si ocurre una excepción o decides cancelar la operación, puedes hacer rollback manualmente.
Ejemplo usando IDbContextTransaction
using var transaction = await dbContext.Database.BeginTransactionAsync();
try
{
// Operaciones de base de datos
dbContext.Add(entidad1);
dbContext.Add(entidad2);
await dbContext.SaveChangesAsync();
// Confirmar la transacción
await transaction.CommitAsync();
}
catch (Exception ex)
{
// Revertir los cambios si ocurre un error
await transaction.RollbackAsync();
// Opcional: loguear o manejar el error
}
Notas importantes
- Si no llamas a
CommitAsync(), la transacción se revierte automáticamente al salir del bloqueusing. - Puedes usar
RollbackAsync()explícitamente si capturas una excepción o detectas una condición que requiere cancelar. - Esto funciona tanto con SQL Server como con otras bases de datos compatibles con EF Core.