Я хочу настроить таргетинг на конкретного поставщика DbContext в зависимости от конфигурации среды.(т.е. appsettings.sqlserver.dev.json, appsettings.oracle.dev.json, appsettings.sqlserver.prod.json, appsettings.oracle.prod.json и т. д. ...)
Решение, приведенное ниже, работает, ноэто похоже на взлом.Кроме того, EF, похоже, игнорирует соглашение о файле конфигурации среды, поэтому вам нужно будет поддерживать файл appsettings.json по умолчанию для команд EF.(add -igration, remove-migratin, update-database и т.д ...)
Существуют ли какие-либо настройки среды провайдера, которые можно использовать для достижения этой цели?
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
string dbProvider = Configuration["Database:Context:Provider"];
string dbConnectionString = Configuration["Database:Context:ConnectionString"];
services.AddDbContext<DatabaseContext>(options =>
{
if (dbProvider == "SqlServer")
{
options.UseSqlServer(dbConnectionString, b => b.MigrationsAssembly("Eagle.Core.Web.Api"));
}
else if (dbProvider == "Oracle")
{
options.UseOracle(dbConnectionString, b => b.MigrationsAssembly("Eagle.Core.Web.Api"));
}
options.EnableSensitiveDataLogging(true);
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}