パッケージ マネージャーを使用して、「update-database -verbose」をローカルで実行できます。
おそらくばかげた質問ですが、オンラインで見つけることができません.Webサイトが展開されると、サーバー上でこれを手動で実行するにはどうすればよいですか?
第二に、データベース移行を本番環境に展開するために推奨する他の戦略は何ですか?また、それらはどのように望ましいですか?
ありがとう
パッケージ マネージャーを使用して、「update-database -verbose」をローカルで実行できます。
おそらくばかげた質問ですが、オンラインで見つけることができません.Webサイトが展開されると、サーバー上でこれを手動で実行するにはどうすればよいですか?
第二に、データベース移行を本番環境に展開するために推奨する他の戦略は何ですか?また、それらはどのように望ましいですか?
ありがとう
いくつかのオプションがあります。
update-database -script
サーバー上のデータベースを更新するための SQL コマンドを生成するために使用できます。/packages/EntityFramework5.0.0/tools/migrate.exe
。過去に、Jet Brains の Team City Build Server でそれを使用して、デプロイ スクリプトで移行をセットアップすることに成功しました。更新:また、 Sayed Ibrahim のブログもチェックしてください。彼は Microsoft の MsBuild チームで働いており、展開に関する優れた洞察を持っています。
私たちにとって、DBA は本番 (および本番前) 環境にアクセスできる唯一のグループです。Update-Database -Script
データベースの更新に必要な Sql を取得するには、パッケージ コンソール コマンドを使用するだけです。これは、検証できる場所などに渡されます。
一部の人にとっては少し単純すぎるかもしれませんが、うまくいきます。
HTH。
EF コマンド (update-database -script) を使用してスクリプトを取得するか、手動でスクリプトを記述できます。これは、本番環境でデータベースを更新する際の最も重要なことではありません。私にとって最も重要なことは、すべてのスクリプトが正しく実行され、期待どおりにレコードに影響があることを確認することです。私の意見では、運用前の環境を用意し、データベースは運用環境のコピーにする必要があります。このようにして、スクリプトを実行し、非常によく似た環境にアプリケーションをデプロイして、問題がないかどうかを確認できます。スクリプトは、DEV 環境では正しく実行されますが、運用環境では失敗することがあります。頭痛の種を避けるために、実稼働前環境で実稼働環境をシミュレートする必要があります。脚本に関しては、チームに複数の開発者がいる場合は、スクリプトを構造スクリプトとデータ スクリプトに分類することを好みます。構造スクリプトはデータベースの構造を変更し (テーブルの追加、テーブルへの列の追加など)、データ スクリプトはレコードの挿入/更新/削除を行います。また、各スクリプトは依存関係を指定して、間違った順序で実行されないようにする必要があります。テーブル A に行を挿入するデータ スクリプトは、テーブル A が作成されるまで実行できません。これが私がすることです: -実行されたスクリプトを登録するためのテーブルを定義します。例: ExecutedScriptsHistory。-各スクリプトには番号と名前があります。-スクリプトが実行された後、テーブル ExecutedScriptsHistory に新しい行が挿入されます。-スクリプトを実行する前に、依存関係をチェックします。そのために、スクリプトが実行されたかどうかを確認します (テーブル ExecutedScriptsHistory に存在します)。
スクリプトを実行した後、ExecutedScriptsHistory をチェックして、すべてのスクリプトが実行されたかどうかを確認できます。この戦略は、Microsoft が EF 移行で選択したものと似ていますが、完全に制御できます。
誰にでも簡単な答えを与えるだけです。
これは、Configuration.cs の Migrations フォルダー内の "Update-Database" です。
internal sealed class Configuration : DbMigrationsConfiguration<projectname.Models.dbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true; // Update-Data -Force (deletes columns etc)
}
そして、リモートサーバーで最初に「移行を有効にする」には、これを Global.asax.cs ファイルに追加します。
protected void Application_Start()
{
....
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<dbContext, Migrations.Configuration>());