私はしばらくの間EF移行を使用しており、プロジェクトに100を超える移行ファイルがあります。先に進む前に、これらを1つの移行に統合したいと思います。つまり、既存のInitialCreate移行を、その後のすべての変更を考慮した新しいバージョンに置き換えて、他のすべての移行ファイルを削除できるようにします。
DB内のすべてのデータを失うことを心配していなければ、これは非常に簡単に行えますが、私はそうしています。
Update-Databaseを実行するだけで、すべてのデータをそのまま維持し、データベースを最初から(データなしで)再作成する機能を維持しながら、これを実現するにはどうすればよいですか( Julie Lermanによって概説されたアプローチ )?
以下の手順には、DBで何もせずに作業できるという利点があり、__ MigrationHistoryはそのままの状態を維持できます。また、構造のバージョンが異なる複数の異なる環境がある場合にも機能します-一致するブランチがあれば。
最後の移行を最初の移行に変えます。秘訣は、使用中のコードとDBの最も古いバージョンを使用し、最後の移行を新しい初期移行に置き換え、以前のすべての移行を削除することです。新しいブランチは最新のマイグレーションを保持するので、古いブランチにマージした後も引き続き機能します。
したがって、最も古いブランチ(通常はPROD)から開始し、次のようにします。
上記の注意は、EFがそれ自体で実行しないものを移行に追加しない場合にのみ機能します。例えば。新しく作成された移行では取得されないDBビューなどを追加すると、EFがコードに基づいて生成したスクリプトのみが取得されます。