IdentityServer4:调用AddConfigurationStore扩展方法时重用SqlConnection

IdentityServer4:调用AddConfigurationStore扩展方法时重用SqlConnection,identityserver4,ef-core-2.2,Identityserver4,Ef Core 2.2,在我的例子中,我有几个EF上下文共享同一个数据库(即,所有表都在同一个db上),我希望在所有上下文之间共享同一个SqlConnection,这样我就可以在同一个事务中应用多个更改 为了实现这一点,我首先用以下代码注册SqlConnection: services.AddScoped(sp => new SqlConnection(Configuration.GetConnectionString("DefaultConnection"))); 完成此操作后,我更改了其中一个EF上下文,以

在我的例子中,我有几个EF上下文共享同一个数据库(即,所有表都在同一个db上),我希望在所有上下文之间共享同一个SqlConnection,这样我就可以在同一个事务中应用多个更改

为了实现这一点,我首先用以下代码注册
SqlConnection

services.AddScoped(sp => new SqlConnection(Configuration.GetConnectionString("DefaultConnection")));
完成此操作后,我更改了其中一个EF上下文,以便它重用相同的连接:

services.AddDbContext<ApplicationDbContext>((provider, options) =>
builder.UseSqlServer
确实有一个重载,可以让我传递连接,但是如何在运行时解析SqlConnection,以便在所有上下文中共享相同的连接

谢谢

路易斯自己回答说:)

不应使用
CondigureDbContext
属性,而应使用
ResolveDbContextOptions

.AddConfigurationStore(options => {
     options.ResolveDbContextOptions = (provider, builder) => 
     builder.UseSqlServer(provider.GetRequiredService<Foo>().FooValue);
})
.AddConfigurationStore(选项=>{
options.resolvedContextOptions=(提供程序、生成器)=>
builder.UseSqlServer(provider.GetRequiredService().FooValue);
})
.AddConfigurationStore(options => {
     options.ResolveDbContextOptions = (provider, builder) => 
     builder.UseSqlServer(provider.GetRequiredService<Foo>().FooValue);
})