1

プロジェクトにCodeFirstMigrationsを導入したいのですが、テストのためにこれをクライアントにデプロイする方法がわかりません。これまでは非常に単純で、CreateDatabaseIfNotExists初期化子を使用したばかりです。今、私は2つのシナリオを持っています:

  1. 彼は既存の移行前のデータベースを削除し、初期化子を使用して新しい移行ありのデータベースを作成します。これからは、移行を使用してデータベースをアップグレードします。MigrateDatabaseToLatestVersionイニシャライザを使用してDBを作成することもできますか?

  2. コードをデプロイして、移行を実行させます。ここでは、を使用する必要があるかどうかはよくわかりませんMigrateDatabaseToLatestVersion。これにより、移行前のデータベースが移行に適したデータベースにアップグレードされますか?

4

1 に答える 1

3

これは、自動移行が必要な場合に私が行うことです。これが解決策を見つけるのに役立つことを願っています:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
    );
Database.Initialize(false);

移行の構成ファイルでは、コンストラクターで次のように設定します

AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;

構成ファイルには、シード メソッドのオーバーライドが必要です。そうでない場合は、それを追加してシード データを入力できます。

上記が行うことは、データの損失が発生しない限り、データベースを作成/最新にアップグレードすることです。これにより、コードをクライアントに渡すことができます。


余談ですが、本番システムの場合、私は通常、これを行わないという点について議論します。これには多くの欠点がありました。私が制御できないデータベースについては、生成されたスクリプト ファイルを拒否したクライアントをまだ見つけていません。

これは、パッケージ マネージャー コンソールを使用して移行を追加した後、次のコマンドを使用して取得できます。

Update-database –script -verbose
于 2012-05-23T19:47:57.260 に答える