entity-framework-coreでマイグレーションをマージする

asp.net-core c# entity-framework entity-framework-core

質問

すべての移行ファイルを1つにマージすることは可能ですか?

初期移行を作成しました。

dotnet ef migrations add InitialMigration

ソース

モデルを変更したら、新しい移行アップデートを作成します。

しかし今、私はあまりにも多くの移行アップデートファイルを持っています。すべての移行ファイルを1つにマージすることはできますか?

もちろん、ドロップデータベースはオプションではありません、データを保存する必要があります

受け入れられた回答

EF 6.Xは、オプションがあるIgnoreChanges 。それはあなたのシナリオにぴったりです。しかし残念ながら、これはEFコアで利用可能な機能ではありません。

しかし、回避策があります。

手順1: [移行]フォルダ内のすべての移行スクリプトを削除します。

ステップ2:パッケージマネージャコンソールで次のコマンドを実行します。

PM> Add-Migration InitialCreate

ステップ3: Up() Down()メソッドとDown()メソッドの両方のコードを削除します。これを行う前に、手順5で再度必要になるので、これらのメソッドを別の場所に保存しておきます。

ステップ4

 PM> Update-Database

新しいレコードを__EFMigrationsHistoryテーブルに挿入します。

ステップ5:その後、 ステップ3の安全な場所に保管されているコンテンツから、上記の移行スクリプトの(つまり.._InitialCreateUp() Down()メソッドとDown()メソッドを入力します。

それだ。今、あなたは1つの移行ファイルしか持っていません:)

注:パッケージマネージャコンソール(PM)を備えたEFコア: パッケージマネージャコンソール


人気のある回答

これを行う1つの方法は、すべての移行ファイルを物理的に削除し、新しいファイルを追加することです。マイグレーションが「Migrations」フォルダーにある場合は、単に削除することもできます。そうしないと、「ModelSnapshot」ファイルも削除する必要があります。私はこのアプローチがあなたの問題を解決できると思います。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ