我想基于环境配置来定位特定的DbContext提供程序。 (即appsettings.sqlserver.dev.json,appsettings.oracle.dev.json,appsettings.sqlserver.prod.json,appsettings.oracle.prod.json等...)
下面的解决方案有效,但是似乎很容易破解。此外,EF似乎忽略了环境配置文件约定,因此您将需要为EF命令维护默认的appsettings.json。 (添加迁移,删除迁移,更新数据库等)
有没有可用于完成此操作的提供程序环境设置?
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);
}