私はMVC 3プロジェクトを持っていますが、自動移行と一緒にコードベースの移行を使用していました(これは機能します)。
このプロジェクトを新しいサーバーにインストールすると、CreateDatabaseIfNotExist 初期化子によってデータベースが作成されます。これは、このシード メソッドを使用しているためです。これを実行すると、1 つのエントリを持つ __MigrationHistory テーブルが作成されます。このエントリのモデル ハッシュは、私の開発サーバーからの最後のものとまったく同じです。私の開発サーバーでは、__MigrationHistory テーブルにコード ベースの移行ごとにエントリがあります。
問題は、新しいサーバーで移行を実行しようとすると、「何もする必要がないため、モデルハッシュが同じであるため」と言うと予想していましたが、これの代わりに、移行は MigrationId のみを検索するようですデータベースにアクセスし、MigrationId が欠落しているすべての移行を実行しようとします。もちろん、これは例外につながります。これは、移行がデータベース構造を既にそこに追加しようとするためです。
これは非常に一般的なシナリオだと思いますが、これに対する回避策はありますか? 当面の私の回避策は、開発システムの __MigrationHistory からすべてのコンテンツを新しいサーバーにコピーすることですが、モデル ハッシュを varbinary として扱うため、これは非常に注意が必要です。より良い解決策はありますか、それとも論理的なことが間違っていることを理解していましたか?