.Net Core - 根据环境更改数据库迁移

时间:2016-08-19 20:00:04

标签: c# entity-framework-core .net-core

因此,我试图找出在开发中运行针对PostgreSQL数据库的应用程序和生产中的SQL Server数据库的黄金路径。困难的部分是迁移将是不同的。目前,我的方法是这样的:

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有多个定义吗?

1 个答案:

答案 0 :(得分:-2)

经过一段时间的思考,我相信这是一种反模式。无论我的特定用例(开发中的postgres,prod中的SQL Server),我认为对于不同的环境使用不同的数据库系统是不赞成的,因为部署后可能会出现意外问题。最好坚持使用相同的开发和生产。