すべての移行ファイルを1つにマージすることは可能ですか?
初期移行を作成しました。
dotnet ef migrations add InitialMigration
モデルに変更がある場合はいつでも、新しい移行更新を作成します。
しかし、現在、移行更新ファイルが多すぎます。すべての移行ファイルを1つにマージすることは可能ですか?
もちろん、データベースのドロップはオプションではありません。データを保持する必要があります!
EF 6.XにはオプションIgnoreChanges
があります。それはあなたのシナリオにぴったりです。しかし、残念ながらそれはEFコアで利用可能な機能ではありません。
しかし、回避策があります。
ステップ1:Migrationsフォルダー内のすべての移行スクリプトを削除します。
ステップ2:パッケージマネージャーコンソールで:実行
_PM> Add-Migration InitialCreate
_
ステップ3:Up()
およびDown()
メソッドコードの両方を削除します。これを行う前に、手順5で再度必要になるため、これらのメソッドを別の場所に保存しておいてください。
ステップ4:実行:
_ PM> Update-Database
_
新しいレコードを___EFMigrationsHistory
_テーブルに挿入します。
ステップ5:その後、上記の移行スクリプト(つまり_.._InitialCreate
_)Up()
およびDown()
メソッドを入力しますステップ3から安全な場所に保管されているコンテンツから。
それだ。これで移行ファイルは1つだけになります:)
注:EFコアとパッケージマネージャーコンソール(PM): パッケージマネージャーコンソール
これを行う1つの方法は、すべての移行ファイルを物理的に削除し、新しいファイルを追加することです。マイグレーションが「Migrations」フォルダーにある場合は、単にそれを削除できます。それ以外の場合は、「ModelSnapshot」ファイルも削除する必要があります。このアプローチで問題を解決できると思います。
すべてではなくN個の最後のマイグレーションをマージする場合、プロトコルは同じではありません。
dotnet ef database update NameOfTheLastMigration
dotnet ef migrations remove
dotnet ef database update
dotnet ef migrations add NameOfTheMergeMigration