Я пытаюсь внедрить 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
будет 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
.
Кто-нибудь имеет представление о том, как разрешить TenantProvider
в методе .AddDbContext
?
Дополнительная информация:
Я пытался заменить ITenantProvider
в конструкторе DbContext
на IHttpContextAccessor
- последний зарегистрирован как синглтон. Но параметр acessor
по-прежнему null
.
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();