我们目前在一个客户的内部运行一个项目。他们想添加一些敏感的配置参数,但无法使用Azure,因此我考虑添加数据库配置提供程序。为此,我添加了一个包含配置的表并添加了迁移。我使用DbContext.Database.Migrate();
现在我有一个问题,我添加了一个自定义配置提供程序,但是由于.Net Core配置的工作方式,它只能在执行迁移之前初始化。
基本上,我的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脚本或任何其他方式来运行迁移,但我唯一的选择是使用代码内。
我该如何进行这项工作?