Skip to content

Commit 901ee94

Browse files
committed
Properly support disabling triggers
1 parent efe95f6 commit 901ee94

3 files changed

Lines changed: 54 additions & 0 deletions

File tree

src/EntityFrameworkCore.Triggered/TriggerSession.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public async Task RaiseTriggers(Type openTriggerType, Exception? exception, ITri
4848
throw new ArgumentNullException(nameof(triggerContextDiscoveryStrategy));
4949
}
5050

51+
if (_configuration.Disabled)
52+
{
53+
return;
54+
}
55+
5156
cancellationToken.ThrowIfCancellationRequested();
5257

5358
var triggerContextDescriptorBatches = triggerContextDiscoveryStrategy.Discover(_configuration, _tracker, _logger);

test/EntityFrameworkCore.Triggered.Tests/TriggerSessionTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,5 +412,30 @@ public void RaiseAfterSaveTriggers_ModifiedEntity_HasAccessToUnmodifiedEntity()
412412
Assert.Equal("test1", _capturedTriggerContext.UnmodifiedEntity.Name);
413413
Assert.Equal("test2", _capturedTriggerContext.Entity.Name);
414414
}
415+
416+
[Fact]
417+
public async Task RaiseTriggers_DisabledConfiguration_Noop()
418+
{
419+
// arrange
420+
using var context = new TestDbContext();
421+
422+
var triggerService = context.GetService<ITriggerService>();
423+
triggerService.Configuration = triggerService.Configuration with {
424+
Disabled = true
425+
};
426+
427+
var subject = triggerService.CreateSession(context);
428+
429+
context.TestModels.Add(new TestModel {
430+
Id = 1,
431+
Name = "test1"
432+
});
433+
434+
// act
435+
await subject.RaiseBeforeSaveTriggers();
436+
437+
// assert
438+
Assert.Equal(0, context.TriggerStub.BeforeSaveInvocations.Count);
439+
}
415440
}
416441
}

test/EntityFrameworkCore.Triggered.Tests/TriggeredDbContextTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,5 +539,29 @@ public async Task SaveChangesAsync_DisposesTriggerSession()
539539

540540
Assert.Equal(1, triggerServiceStub.LastSession.DisposeCalls);
541541
}
542+
543+
[Fact]
544+
public async Task SaveChangesAsync_DisabledConfiguration_Noop()
545+
{
546+
// arrange
547+
var serviceProvider = new ServiceCollection().BuildServiceProvider();
548+
549+
var subject = new TestDbContext(serviceProvider, false);
550+
var triggerService = subject.GetService<ITriggerService>();
551+
triggerService.Configuration = triggerService.Configuration with {
552+
Disabled = true
553+
};
554+
555+
subject.TestModels.Add(new TestModel {
556+
Id = Guid.NewGuid(),
557+
Name = "test1"
558+
});
559+
560+
// act
561+
await subject.SaveChangesAsync();
562+
563+
// assert
564+
Assert.Empty(subject.TriggerStub.BeforeSaveInvocations);
565+
}
542566
}
543567
}

0 commit comments

Comments
 (0)