У меня есть веб-приложение .NET Core 2.1, где пользователи могут выбирать поставщика базы данных по своему выбору.Это выбор между SQL Server, SQLite и MySQL (сейчас можно добавить больше провайдеров).Я сохраняю выбор пользователя в файл json вместе со строками подключения для каждого поставщика базы данных:
"ConnectionStrings": {
"MSSQL": "Server=(localdb)\\MSSQLLocalDB;Database=ABC_db;Trusted_Connection=True;MultipleActiveResultSets=true",
"SQLite": "Data Source=ABC.db"
},
"UserSettings": {
"DatabaseProvider": "MSSQL", //this changes as per user's selection
"GenerateDb": false //this will be false for the first time, after that it will be true
}
И в моем методе ConfigureServices
в Startup.cs
я поместил несколько проверок для регистрации / внедрения базы данных.контекст и идентификация:
GenerateDb = Configuration.GetValue<bool>("GenerateDb");
DatabaseProvider = Configuration.GetValue<string>("SystemSettings:SystemProfile:DatabaseProvider");
if(GenerateDb)
{
if (DatabaseProvider == "MSSQL")
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString(DatabaseProvider)));
else if (DatabaseProvider == "SQLite")
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlite(Configuration.GetConnectionString(DatabaseProvider)));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
}
, и этот код работает как положено, он устанавливает контекст базы данных с любым провайдером, которого выбрал пользователь.Единственная проблема заключается в том, что для активации контекста базы данных, мне нужно остановить и запустить приложение снова, поэтому, когда оно читает файл json, GenerateDb
будет истинным.Я ищу что-то, что может помочь мне перезапустить приложение, не делая этого вручную.Доступна ли эта функциональность?Я ничего не мог найти в документах.