解决租户连接字符串

时间:2019-07-04 21:12:40

标签: c# asp.net-core dependency-injection dbcontext

我正在尝试构建一个多租户应用程序,其中的租户拥有自己的数据库。

我已经创建了一个类似的帮助器类:

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

我不明白自己做错了什么,有人能指出我正确的方向吗?

0 个答案:

没有答案