Skip to content

Commit 17f8b54

Browse files
authored
Merge pull request #169 from koenbeuk/issue-168
Ensure that we delist the trigger session on exception in the BeforeSave cycle
2 parents 59c5983 + 6dce097 commit 17f8b54

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/EntityFrameworkCore.Triggered/Internal/TriggerSessionSaveChangesInterceptor.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,19 @@ public InterceptionResult<int> SavingChanges(DbContextEventData eventData, Inter
8080

8181
try
8282
{
83-
8483
eventData.Context.ChangeTracker.AutoDetectChangesEnabled = false;
8584

8685
_triggerSession.RaiseBeforeSaveStartingTriggers();
8786
_triggerSession.RaiseBeforeSaveTriggers();
8887
_triggerSession.CaptureDiscoveredChanges();
8988
_triggerSession.RaiseBeforeSaveCompletedTriggers();
9089
}
90+
catch
91+
{
92+
// We're aborting the SaveChanges call, delist the trigger session now
93+
DelistTriggerSession(eventData);
94+
throw;
95+
}
9196
finally
9297
{
9398
eventData.Context.ChangeTracker.AutoDetectChangesEnabled = defaultAutoDetectChangesEnabled;
@@ -118,6 +123,12 @@ public async ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEven
118123
_triggerSession.RaiseBeforeSaveCompletedTriggers();
119124
await _triggerSession.RaiseBeforeSaveCompletedAsyncTriggers(cancellationToken).ConfigureAwait(false);
120125
}
126+
catch
127+
{
128+
// We're aborting the SaveChanges call, delist the trigger session now
129+
DelistTriggerSession(eventData);
130+
throw;
131+
}
121132
finally
122133
{
123134
eventData.Context.ChangeTracker.AutoDetectChangesEnabled = defaultAutoDetectChangesEnabled;

0 commit comments

Comments
 (0)