.net核心通用主机生成器在随后的上下文DI注册中使用来自一个上下文的连接字符串



我需要使用内置的Ioc容器在.net core 2.1应用程序中注册两个DbContext类。第二个上下文的连接细节存储在第一个上下文的数据库中,因此注册看起来像

new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services
.AddDbContext<Context1>()
.AddDbContext<Context2>( /* Connection string from context1 here */ )
.AddHostedService<MyHostedService>();
});

我有没有办法注册Context1,获取值,然后用它来注册Context2

使用一个重载,它将允许您访问服务提供商

new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services
.AddDbContext<Context1>()
.AddDbContext<Context2>((serviceProvider, options) => {
var context1 = serviceProvider.GetService<Context1>();
var connectionString = /* get Connection string from context1 here */ 
options.UseSqlServer(connectionString);
})
.AddHostedService<MyHostedService>();
});

参考AddDbContext<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime)

最新更新