本番環境で移行を実行する方法

asp.net-core entity-framework-core

質問

私は移行に慣れていないので、自分の変更をLiveDBに取り込むために何をすべきかを知ることができません。

だから私のモデルに追加するときにdevで私は

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

しかし、私はライブで何をしますか?私はライブに\ deployを公開して、移行が実行され、スキーマを更新できると願っていましたが、私はそう思わない:)

ライブSQLサーバーは、私自身の世界ではオフになっています。私は、devstボックスから接続文字列を変更し、更新データベースを再度実行するだけでアクセスできません。

あなたは何をしていますか、ドキュメントはどこですか?

ありがとう、スティーブ

受け入れられた回答

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で移行を実行する方法の1つは、アプリの起動時に次のようなものを追加することです。

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

これにより、起動時にデータベースに対するすべての保留中の移行が実行されます。


人気のある回答

  1. DBテーブル "__EFMigrationsHistory"を確認して、最後に実行された移行を確認してください。
  2. Visual Studioで、[ツール]> [NuGetパッケージマネージャ]> [パッケージマネージャコンソール]の順に選択します。
  3. script-migration -From "last_migration_name" -To "current_migration_name"またはscript-migration -idempotent
  4. Visual Studioは生成されたSQLスクリプトで新しいタブを開き、あなたのDBでそれを実行します。


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ