File tree Expand file tree Collapse file tree
src/EntityFrameworkCore.Triggered/Internal
test/EntityFrameworkCore.Triggered.Tests/Infrastructure Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -21,10 +21,12 @@ public sealed class TriggerInstanceFactory<TTriggerType> : ITriggerInstanceFacto
2121 {
2222 static ObjectFactory ? _internalFactory ;
2323
24+ readonly object ? _capturedInstance ;
2425 object ? _instance ;
2526
2627 public TriggerInstanceFactory ( object ? instance )
2728 {
29+ _capturedInstance = instance ;
2830 _instance = instance ;
2931 }
3032
@@ -46,7 +48,7 @@ public object Create(IServiceProvider serviceProvider)
4648
4749 public void ResetState ( )
4850 {
49- _instance = null ;
51+ _instance = _capturedInstance ;
5052 }
5153
5254 public Task ResetStateAsync ( CancellationToken cancellationToken = default )
Original file line number Diff line number Diff line change @@ -122,6 +122,32 @@ public void AddTriggeredDbContextPool_ReusesScopedServiceProvider()
122122 Assert . Single ( triggerStub . BeforeSaveInvocations ) ;
123123 }
124124
125+ [ Fact ]
126+ public void AddTriggeredDbContextPool_KeepsRegisteredTriggerInstanceAcrossLeases ( )
127+ {
128+ var triggerStub = new TriggerStub < TestModel > ( ) ;
129+ var subject = new ServiceCollection ( ) ;
130+ subject . AddTriggeredDbContextPool < TestDbContext > ( options => {
131+ options . UseInMemoryDatabase ( nameof ( AddTriggeredDbContextPool_KeepsRegisteredTriggerInstanceAcrossLeases ) ) ;
132+ options . ConfigureWarnings ( warningOptions => {
133+ warningOptions . Ignore ( CoreEventId . ManyServiceProvidersCreatedWarning ) ;
134+ } ) ;
135+ options . UseTriggers ( triggerOptions => triggerOptions . AddTrigger ( triggerStub ) ) ;
136+ } , poolSize : 1 ) ;
137+
138+ using var serviceProvider = subject . BuildServiceProvider ( ) ;
139+
140+ for ( var lease = 0 ; lease < 3 ; lease ++ )
141+ {
142+ using var scope = serviceProvider . CreateScope ( ) ;
143+ var context = scope . ServiceProvider . GetRequiredService < TestDbContext > ( ) ;
144+ context . TestModels . Add ( new TestModel ( ) ) ;
145+ context . SaveChanges ( ) ;
146+ }
147+
148+ Assert . Equal ( 3 , triggerStub . BeforeSaveInvocations . Count ) ;
149+ }
150+
125151 [ Fact ]
126152 public void AddTriggeredDbContextPool_SupportsAScopedLifetime ( )
127153 {
You can’t perform that action at this time.
0 commit comments