我正在尝试将 TenantProvider 注入 DbContext
public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, long>
{
public int? _tenantId;
public ITenantProvider _tenantProvider;
public AppDbContext(
DbContextOptions<AppDbContext> options,
ITenantProvider tenantProvider
)
: base(options)
{
_tenantProvider = tenantProvider;
}
但我不明白如何正确注册它 - 如果我将断点放在构造函数中 -tenantProvider
is null
.
该位来自Startup.cs
services.AddDbContext<AppDbContext>(options => AppDbContextOptionsBuilder.Get());
需要下一行来注入DbContext
进入控制器或服务(如果我添加ServiceLifetime.Scoped
作为上述方法的第二个参数 -AddDbContext
- 该功能不起作用):
services.AddScoped(p => new AppDbContext(AppDbContextOptionsBuilder.Get(), p.GetService<ITenantProvider>()));
(Entity Framework
是我的解决方案中的一个单独的项目)
使用时.AddScoped
方法 - 我们可以通过TenantProvider
通过使用解析它进入构造函数.GetService
method.
有谁知道如何解决TenantProvider
in .AddDbContext
method?
附加信息:
我试图更换ITenantProvider
在构造函数中DbContext
with IHttpContextAccessor
- 后者注册为单例。但是acessor
参数依然是null
.
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();