. net Core -根据环境改变数据库迁移

本文关键字:改变 数据库 迁移 环境 Core -根 net | 更新日期: 2023-09-27 18:03:14

所以,我试图找出什么黄金路径是运行一个应用程序对开发中的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的多个定义?

. net Core -根据环境改变数据库迁移

考虑了很长一段时间后,我认为这是一个反模式。不管我的特殊用例(postgres在dev, SQL Server在prod),我认为在不同的环境中使用不同的数据库系统是不合适的,因为部署后可能会出现意想不到的问题。对于开发和生产,最好坚持使用同一种方法。