如何在生產中運行遷移

asp.net-core entity-framework-core

我是遷移的新手,我無法找到如何將我的更改添加到LiveDB中。

所以在開發時我添加到我的模型中

PM> add-migration <name>
PM> update-database

但是我在現場做什麼?我正在希望我可以發布\ deploy to live並且遷移將運行並更新架構,但我想不是:)

Live SQL服務器在它自己的世界中關閉我無法從我的開發框訪問它只是更改連接字符串並再次執行更新數據庫。

你們做什麼,文檔在哪裡?

謝謝,史蒂夫

一般承認的答案

更新了Core 2.0+的更好方法

由於在正常執行中運行啟動功能的EF Core CLI工具之類的工具,遷移應該在Program.cs中運行。

這是一個例子:

public class Program
{
  public static void Main(string[] args)
  {
      BuildWebHost(args).Run();
  }

  public static IWebHost BuildWebHost(string[] args)
  {
      var host = WebHost.CreateDefaultBuilder(args)
          .UseStartup<Startup>()
          .Build();

    using (var scope = host.Services.CreateScope())
    {
        var db = scope.ServiceProvider.GetService<ShortenerContext>();
        db.Database.Migrate();
    }

    return host;
  }
}

在1.x中運行遷移的一種方法是在app啟動時添加類似的東西:

public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            ShortenerContext db)
{
    db.Database.Migrate();
    //Rest omitted
}

這將在啟動時對數據庫執行所有掛起的遷移。


熱門答案

  1. 檢查數據庫表“__EMMigrationsHistory”以找出上次運行的遷移
  2. 在Visual Studio中,選擇“工具”>“NuGet包管理器”>“包管理器控制台”
  3. 運行script-migration -From "last_migration_name" -To "current_migration_name"script-migration -idempotent
  4. Visual Studio將使用生成的SQL腳本打開一個新選項卡,在您的數據庫上運行它


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow