Разрешение строки подключения арендатора - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь создать мультитенантное приложение, в котором у арендаторов есть свои собственные БД.

Я создал вспомогательный класс примерно так:

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'.

Я не понимаю, что я сделал неправильно, кто-нибудь может указать мне правильное направление?

...