Я вызывал метод в своем классе DbInitializer, который создает и заполняет базу данных, если она еще не существует и / или не заполнена данными.Я передавал оба моих контекста базы данных этому методу следующим образом.
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<PrimaryContext>();
var tenantContext = services.GetRequiredService<SecondaryContext>();
DbInitializer.Initialize(primaryContext, secondaryContext);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while seeding the database.");
}
}
host.Run();
}
Вызов метода GetRequiredService для передачи контекстов методу Initialize приводил к тому, что IHttpContextAccessor возвращал значение null в моем классе DatabaseTenantProvider.Я не совсем понимаю, почему это происходит, поэтому я был бы очень признателен, если бы кто-то мог объяснить / уточнить в комментарии ниже.