我需要使用内置的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
?
答案 0 :(得分:3)
使用过载之一,它将使您能够访问服务提供商
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>();
});