我正在尝试构建一个多租户应用程序,其中的租户拥有自己的数据库。
我已经创建了一个类似的帮助器类:
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'.
我不明白自己做错了什么,有人能指出我正确的方向吗?