Я пытаюсь создать мультитенантное приложение, в котором у арендаторов есть свои собственные БД.
Я создал вспомогательный класс примерно так:
public class Tenant
{
public string Name { get; set; }
public string ConnectionString { get; set; }
}
А внутри моего appsettings.json
у меня есть:
{
"Multitenancy": {
"Tenants": [
{
"Name": "Tenant1",
"ConnectionString": "server=localhost\\SQLEXPRESS; database=Tenant1; Integrated Security=SSPI;"
},
{
"Name": "Tenant2",
"ConnectionString": "server=localhost\\SQLEXPRESS; database=Tenant2; Integrated Security=SSPI;"
}
]
}
}
Тогда по моему ApplicationDbContext
у меня есть:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
private readonly Tenant _tenant;
public ApplicationDbContext(Tenant tenant)
{
_tenant = tenant;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_tenant.ConnectionString);
}
}
Я добавил контекст БД в свой Startup
:
services.AddDbContext<ApplicationDbContext>();
Но я продолжаю получать эту ошибку:
Unable to resolve service for type 'Tenant' while attempting to activate 'ApplicationDbContext'.
Я не понимаю, что я сделал неправильно, кто-нибудь может указать мне правильное направление?