diff --git a/EntityFrameworkCore.Console/Program.cs b/EntityFrameworkCore.Console/Program.cs index bb07364..2ddd15e 100644 --- a/EntityFrameworkCore.Console/Program.cs +++ b/EntityFrameworkCore.Console/Program.cs @@ -23,6 +23,56 @@ context.Database.EnsureCreated(); // var firstCoach = await context.Coaches.FirstOrDefaultAsync(); +async Task TransactionWithSavepoint() +{ + var transaction = context.Database.BeginTransaction(); + + var league = new League + { + Name = "Geosphere league" + }; + + context.Add(league); + context.SaveChanges(); + + transaction.CreateSavepoint("CreatedLeague"); + + var coach = new Coach + { + Name = "Brad Ironfist" + }; + + context.Add(coach); + context.SaveChanges(); + + var teams = new List + { + new Team + { + Name = "Dominators", + LeagueId = league.Id, + CoachId = coach.Id + } + }; + + context.AddRange(teams); + context.SaveChanges(); + + try + { + transaction.Commit(); + } + catch (Exception) + { + // Rollback everything. + //transaction.Rollback(); + + // Or rollback to a specific save point. + transaction.RollbackToSavepoint("CreatedLeague"); + throw; + } +} + async Task UserDefinedQuery() { var earliestMatch = context.GetEarliestTeamMatch(1);