最後のAdd-Migrationコマンドを元に戻すにはどうすればよいですか?


83

Add-Migrationコマンドを使用して移行を作成しましたが、その移行の名前を変更したいと思います。移行コマンドを元に戻して、新しい目的の名前を使用して再生成できるようにするにはどうすればよいですか?

生成されたファイルを削除するだけの問題ですか、それともこれは悪い考えかもしれませんか?

回答:


135

使用したことがない場合はUpdate-Database、移行ファイルを削除するだけです。アップデートを実行した場合は、を使用してロールバックしてUpdate-Database -TargetMigration "NameOfPreviousMigration"から、移行ファイルを削除する必要があります。

参照:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


追加された最初の移行だった場合はどうなりますか?
Jimmyt1988 2017年

@ Jimmyt1988、Update-Database –TargetMigrationを使用:$ InitialDatabase
Seraphim

それからそれを削除しますか?わかりません。次に、何を削除しますか?
tnk4 7918年

@ tnk479移行ファイル。明確にするために編集
Colin

EF(同様EF 6)の古いバージョンが持っていないのを見て悲しいdrop-databaseremove-migrationコマンド
ハムザKhanzada

15

で移行をまだ実行していない場合は、同じ名前で再度Update-Database実行Add-Migrationして(を使用する必要がある場合があります-Force)、スキャフォールディングを再実行できます。これは、Add-Migrationコマンドの出力に示されています。


これはApplicationDbContextModelSnapshotを復元しないため、これは適切なソリューションではありません
Trojaner 2018

あなたは応答して、正しい@Trojaner stackoverflow.com/a/46921867/690958は、より良い解決策がある
アルベルト・レオン

11

コマンドを使用するだけ

Remove-migration

最後に追加された移行を削除し、スナップショットを更新します。データベースには影響しないため、最初にdbをロールバックする必要があります。


5
EFコアのみ。
ジョン

drop-databaseコマンドと一緒にEF6にあるといいのですが。私も慣れています
Hamza Khanzada

4

EntityFrameworkCore 2.0には、モデルのスナップショットが付属しています。モデルスナップショットを更新するには、removemigrationコマンドを実行する必要があります。移行を手動で削除すると、EF Coreが更新を認識し、スナップショットを元に戻すことを読みましたが、これはうまくいきませんでした。

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove


3

@Benの回答に追加するにdotnet efは、さまざまなコマンドを使用する場合、これは必要な削除コマンドです。

dotnet ef migrations remove

これにより、最後の移行が削除され、モデルのスナップショットが更新されます。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.