Tutorials Entity Framework Core Tutorial
Transactions in EF Core
Transactions in EF Core: free step-by-step lesson with examples, common mistakes, and interview tips — part of Entity Framework Core Tutorial on Toolliyo Academy.
On this page
Entity Framework Core Tutorial · Lesson 28 of 100
Transactions in EF Core
Beginner ✓ → Intermediate → Advanced → Professional
Intermediate · 2 — Data & queries · ~6 min · Module 3: CRUD Operations
What is this?
Transactions group multiple database operations into one atomic unit — all commit or all roll back. SaveChangesAsync uses a transaction by default; you can also use BeginTransactionAsync explicitly.
Why should you care?
ShopNest checkout must deduct stock and create Order in one atomic step — partial success would charge customers without inventory movement.
See it live — copy this example
Paste into a .NET project with EF Core packages, then run with LocalDB/SQL Server (dotnet ef / dotnet run).
await using var tx = await _context.Database.BeginTransactionAsync();
try
{
var product = await _context.Products.FindAsync(productId);
product!.StockQty -= qty;
_context.Orders.Add(new Order { CustomerId = customerId, /* items */ });
await _context.SaveChangesAsync();
await tx.CommitAsync();
}
catch
{
await tx.RollbackAsync();
throw;
}
What happened?
- BeginTransactionAsync opens explicit transaction.
- SaveChangesAsync inside shares it.
- CommitAsync persists both stock change and order; RollbackAsync undoes both on failure.
Practice next
- Wrap stock decrement + order insert in explicit transaction.
- Force failure after SaveChanges and confirm rollback in SSMS.
- Use Database.ExecuteSqlRaw within same transaction when needed.
- Use IsolationLevel.Serializable only when phantom reads are unacceptable — measure lock impact.
- Combine with execution strategy for retry on transient failures in Azure SQL.
Remember
Transactions ensure all-or-nothing commits. SaveChangesAsync is transactional by default. Explicit transactions coordinate multiple saves or raw SQL.
ShopNest checkout atomicity
Payment capture and order insert share one transaction — failure rolls back both.
Outcome: No paid orders without matching stock deduction rows.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!