因此,我试图弄清楚在开发中运行应用程序的PostgreSQL数据库和生产中的SQL Server数据库的应用程序的黄金路径。困难的部分是迁移将有所不同。目前,我的做法是这样的:.Net Core - 根据环境更改数据库迁移
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(SetDbContextOptionsForEnvironment, ServiceLifetime.Transient);
}
private void SetDbContextOptionsForEnvironment(DbContextOptionsBuilder options)
{
if(_environmentName == "production") {
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
}
else {
options.UseNpgsql(Configuration["Data:DefaultConnection:ConnectionString"]);
}
}
是保持在一个单独的组件中的迁移和指定组件的选项首选的方法是什么?那么我需要在这些程序集中拥有多个相同DbContext的定义?
您可以使用预处理器指令来控制它。在开发过程中为您创建一个新的构建,为postgre devs定义一个条件编译符号,并使用预处理器指令在实现之间切换... #if POSTGREWTFDUDE/* pgre * /#else */ss * /#endif' – Will
认为预处理器指令在这里有帮助。环境是已知的。问题是如何为两个不同的目标数据库维护单独的迁移集合。 – jaredcnance
好吧我想我不清楚。这对于.Net核心来说非常具体。环境在运行时是已知的。我们一直知道它的生产与否。这个问题涉及维护不同的实体框架代码第一次迁移.. – jaredcnance