Jak cofnąć ostatnie polecenie Add-Migration?

84

Utworzyłem migrację za pomocą Add-Migrationpolecenia, ale chciałbym zmienić nazwę tej migracji. Jak mogę cofnąć polecenie migracji, aby móc je ponownie wygenerować przy użyciu nowej żądanej nazwy?

Czy to tylko kwestia usunięcia wygenerowanych plików, czy może to być zły pomysł?

Miguel Angelo
źródło

Odpowiedzi:

137

Jeśli nie korzystałeś Update-Database, możesz po prostu usunąć plik migracji. Jeśli uruchomiłeś aktualizację, cofnij ją za pomocą, Update-Database -TargetMigration "NameOfPreviousMigration"a następnie usuń plik migracji.

Odniesienie:

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

Colin
źródło
co by było, gdyby była to pierwsza dodana migracja?
Jimmyt1988,
@ Jimmyt1988, użyj Update-Database –TargetMigration: $ InitialDatabase
Seraphim
Następnie go usunąć? Nie rozumiem. Następnie co usunąć?
tnk479
@ tnk479 plik migracji. Zredagowano, aby było jaśniej
Colin
Przykro widzieć, że starsza wersja EF (jak EF 6) nie ma drop-databasei remove-migrationpoleceń
Hamza Khanzada
15

Jeśli nie wykonałeś jeszcze migracji za pomocą Update-Database, możesz uruchomić Add-Migrationponownie z tą samą nazwą (może być konieczne użycie -Force), aby ponownie wykonać rusztowanie. Jest to odnotowane w danych wyjściowych Add-Migrationpolecenia.

Adrian
źródło
To nie jest dobre rozwiązanie, ponieważ nie przywróci ApplicationDbContextModelSnapshot
Trojaner
@Trojaner masz rację, więc odpowiedź stackoverflow.com/a/46921867/690958 jest lepszym rozwiązaniem
Alberto León
Czy może również wyczyścić pliki? U mnie pozostawia plik migracji, ale z pustymi metodami Up () i Down ().
Dmitry Karpenko
12

Po prostu użyj polecenia

Remove-migration

Usunie ostatnio dodaną migrację i aktualizuje migawkę. Nie wpłynie to na bazę danych, więc najpierw musisz wycofać bazę danych.

Tomasz Maj
źródło
5
Tylko w EF Core.
John
Chciałbym, żeby było tam w EF 6 razem z drop-databasepoleceniami .. Jestem do tego zbyt przyzwyczajony
Hamza Khanzada
4

Z EntityFrameworkCore 2,0 jest dostępna migawka modelu. Aby zaktualizować migawkę modelu, konieczne będzie uruchomienie polecenia Usuń migrację. Przeczytałem, że EF Core rozpozna każdą aktualizację i przywróci migawkę, jeśli ręcznie usuniesz migrację, ale to nie zadziałało.

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

Ben
źródło
3

Aby dodać do odpowiedzi @Bena, używając dotnet efróżnych poleceń, jest to polecenie usunięcia, którego potrzebujesz:

dotnet ef migrations remove

Co spowoduje usunięcie ostatniej migracji i zaktualizowanie migawki modelu.

żywiołowy
źródło
2

Zaktualizuj swoją ostatnią idealną migrację za pomocą tego polecenia:

Update-Database –TargetMigration
Abdus Salam Azad
źródło
0

Po prostu użyj polecenia:

Update-Database nameMigration -context nameContext

I wtedy

Remove-migration -Context nameContext
Hugo Borges
źródło