В настоящее время у нас есть проект, запущенный в помещении у одного из наших клиентов. Они хотят добавить некоторые конфиденциальные параметры конфигурации, но не могут использовать Azure, поэтому я подумал о добавлении поставщика конфигурации базы данных. Для этого я добавил таблицу, которая содержит конфигурации, и добавил миграцию. Я выполняю эту миграцию с DbContext.Database.Migrate();
Теперь у меня проблема с тем, что я добавил провайдера нестандартной конфигурации, но из-за способа. Net Конфигурация ядра работает, ее можно инициализировать только до того, как я выполню наши миграции.
По сути, мой метод Main выглядит следующим образом:
public static int Main(string[] args)
{
//Get IConfigurationBuilder and add appsettings.json
var builder = ConfigurationHelper.GetBuilder().InitializeConfiguration();
//Create Serilog logger
CreateLogger(builder.Build());
try
{
Log.Information("Starting host");
var host = CreateHostBuilder(args).Build();
host.MigrateDatabase();
host.InitializeDatabase();
//The problem are the next two lines.
//builder.AddDbConfigurationProvider(options => options.UseSqlServer("DbConnString"));
//builder.Build();
host.Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
Таким образом, провайдер конфигурации добавляется перед выполнением миграций. Поскольку я добавляю таблицу конфигурации через миграцию, это приведет к исключению. Я не могу использовать SQL сценарии или что-либо еще для запуска миграций, единственное, что у меня есть, - это in-code.
Как я могу заставить эту работу работать?