.Net Core - 根據環境更改數據庫遷移

.net-core c# entity-framework-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有多個定義嗎?

一般承認的答案

經過一段時間的思考,我相信這是一種反模式。無論我的特定用例(開發中的postgres,prod中的SQL Server),我認為對於不同的環境使用不同的數據庫系統是不贊成的,因為部署後可能會出現意外問題。最好堅持使用相同的開發和生產。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因