Skip to content

Commit 267ad23

Browse files
committed
Fix for calling SetTriggerServiceProvider twice with the same SP
1 parent 33e2c24 commit 267ad23

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/EntityFrameworkCore.Triggered/Internal/ApplicationTriggerServiceProviderAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ApplicationTriggerServiceProviderAccessor(IServiceProvider internalServic
3737

3838
public void SetTriggerServiceProvider(IServiceProvider serviceProvider)
3939
{
40-
if (_applicationScopedServiceProvider != null)
40+
if (_applicationScopedServiceProvider is not null && _applicationScopedServiceProvider != serviceProvider)
4141
{
4242
throw new InvalidOperationException("Can only set applicationScopedServiceProvider once");
4343
}

test/EntityFrameworkCore.Triggered.Tests/Infrastructure/ServiceCollectionExtensionsTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,26 @@ public void AddTriggeredDbContextPool_ReusesScopedServiceProvider()
124124
Assert.Equal(1, triggerStub.BeforeSaveInvocations.Count);
125125
}
126126

127+
[Fact]
128+
public void AddTriggeredDbContextPool_SupportsAScopedLifetime()
129+
{
130+
var subject = new ServiceCollection();
131+
subject.AddTriggeredDbContextPool<TestDbContext>(options => {
132+
options.UseInMemoryDatabase("test");
133+
options.ConfigureWarnings(warningOptions => {
134+
warningOptions.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning);
135+
});
136+
});
137+
138+
var serviceProvider = subject.BuildServiceProvider();
139+
140+
using var scope = serviceProvider.CreateScope();
141+
142+
var context1 = scope.ServiceProvider.GetRequiredService<TestDbContext>();
143+
var context2 = scope.ServiceProvider.GetRequiredService<TestDbContext>();
144+
145+
Assert.Equal(context1, context1);
146+
}
127147

128148
#if EFCORETRIGGERED2 || EFCORETRIGGERED3
129149
[Fact]

0 commit comments

Comments
 (0)