以下の手順には、DB で何もせずに作業できるという利点があります。__MigrationHistory はそのままにしておくことができます。また、構造のバージョンが異なる複数の異なる環境がある場合にも機能します-一致するブランチがある場合。
最後の移行を最初の移行にします。トリックは、使用中のコードと DB の最も古いバージョンを使用し、その最後の移行を新しい初期移行に置き換え、以前のすべての移行を削除することです。新しいブランチは最新の移行を保持するため、古いブランチにマージした後も引き続き機能します。
したがって、OLDEST ブランチ (通常は PROD) から開始して、次のようにします。
- 最後の移行を除くすべてを削除する
- 最後の移行の「上へ」と「下へ」の両方の方法で移行コードを削除します
- 最後の移行のビルド アクションを「なし」に変更して、EF がそれを無視できるようにします。
- アクティブな接続を変更して、ローカル DB データベースを指すようにします。
- このローカル DB データベースが存在しないことを確認してください
- 追加移行初期
- 作成された「初期」移行から最後の移行にアップとダウンのコードをコピーします
- 初期移行の削除
- 最後の移行のビルド アクションを「コンパイル」に戻します。
- チェックイン
- 変更を上にマージ
- LocalDB DB の DEV ブランチでテストします。新しい初期移行とその後の移行を問題なく実行する必要があります。
- 最新の DB のメイン ブランチでテストする - 何もしないはずです
上記の注意は、EF 自体が実行しないものを移行に追加しない場合にのみ機能します。たとえば、DB ビューなどを追加すると、新しく作成された移行ではそれらが取得されず、コードに基づいて EF が生成するスクリプトのみが取得されます。