Roadmap › Entity Framework (EF6 & EF Core) › Module: Saving Data
Lessons in this course (15)
12. Transactions
Intermediate★ Must knowLesson 12 of 15
csharp
await using var tx = await db.Database.BeginTransactionAsync(ct);
try
{
db.Orders.Add(order);
await db.SaveChangesAsync(ct); // gets order.Id
await db.Inventory.Where(i => i.ProductId == pid).ExecuteUpdateAsync(s => s.SetProperty(i => i.Qty, i => i.Qty - qty), ct);
await tx.CommitAsync(ct);
}
catch
{
await tx.RollbackAsync(ct);
throw;
}With EnableRetryOnFailure, user-initiated transactions must run inside an execution strategy: await db.Database.CreateExecutionStrategy().ExecuteAsync(async () => { ... }). Savepoints are created automatically by SaveChanges inside an explicit transaction.