Entity Framework - Zacznij od nowa - Cofnij / Przywróć wszystkie migracje

168

Z jakiegoś powodu moje migracje wydają się być pomieszane / uszkodzone / cokolwiek. Jestem w punkcie, w którym chcę zacząć od nowa, więc czy jest sposób na całkowite cofnięcie wszystkich migracji, wymazanie historii i usunięcie kodu migracji, więc wróciłem do punktu wyjścia?

np.) PM> Disable-MigrationslubRollback-Migrations

Nie chcę „aktualizować” do oryginalnego etapu migracji (tj. Czegoś w rodzaju InitialSchemacelu), ponieważ nie mogę go już znaleźć.

drzaus
źródło

Odpowiedzi:

358

Możesz przywrócić dowolną migrację, używając:

Update-Database -TargetMigration:"MigrationName"

Jeśli chcesz cofnąć wszystkie migracje, możesz użyć:

Update-Database -TargetMigration:0

lub odpowiednik:

Update-Database -TargetMigration:$InitialDatabase 

W niektórych przypadkach można również usunąć bazę danych i wszystkie klasy migracji.

Ladislav Mrnka
źródło
6
jak zwykle jesteś najlepszy.
drzaus
2
Nie rozumiem, OP wyraźnie mówi "Nie chcę" aktualizować "do oryginalnego kroku migracji (tj. Czegoś w rodzaju celu InitialSchema), ponieważ nie mogę go już znaleźć." W jaki sposób ta odpowiedź spełnia jego oczekiwania? To, czego spodziewałbym się, to to, że znajdę się w stanie, w którym będę musiał enable-migrationsponownie. Są one oczywiście pomocne, ale czy spełniają to, o co prosi PO? (Proszę nie odpowiadać „cóż, przyjął odpowiedź.” Próbuję to zrozumieć, a nie sprytny).
Michael Blackburn
@MichaelBlackburn: Jeśli chcesz uruchomić enable-migrationsponownie i rozwijasz bazę danych od podstaw, wystarczy postępować zgodnie z ostatnim zdaniem: usuń bazę danych i cały kod związany z migracją. Jeśli zacząłeś używać migracji z istniejącą bazą danych, najpierw musisz cofnąć wszystkie migracje za pomocą drugiego lub trzeciego polecenia, a następnie usunąć MigrationHistorytabelę i cały kod związany z migracją. Powinien doprowadzić Cię do pozycji wyjściowej. Możesz również uzyskać startową bazę danych z kopii zapasowej (przed użyciem migracji) i usunąć cały kod związany z migracją.
Ladislav Mrnka
4
@MichaelBlackburn: chodziło mi o to, że wszystkie inne rozwiązania, które widziałem, zalecały aktualizację z powrotem do pierwszej nazwanej migracji, ale mój problem polegał na tym, że nie było początkowej czystej migracji do aktualizacji (z powrotem) - po prostu chciał pozbyć się wszystkich migracji, niezależnie od metody. Dlatego ta odpowiedź była odpowiedzią na mój niepokój-TargetMigration:0
drzaus
17

Dla Entity Framework Core:

Update-Database -Migration:0
Remove-Migration
Andrei Karcheuski
źródło
8

Dla jasności, jeśli używasz LocalDb, kiedy chcesz zacząć od zera, po prostu usuń bazę danych za pomocą Eksploratora bazy danych, a następnie wpisz enable-migrations -forcew Konsoli Menedżera pakietów. Nie usuwaj bazy danych za pośrednictwem folderu App_Data lub wystąpi następujący problem .

Brian Ogden
źródło
2
Zachowaj ostrożność, ponieważ spowoduje to nadpisanie pliku Migrations \ Configuration.cs bez ostrzeżenia!
cgatian
Dzięki za ostrzeżenie, po pewnym czasie po prostu upuściłem kod, miło jest mieć cały kod w jednym miejscu, mieć kontrolę wersji dla bazy danych jako takiej, ale nie widziałem żadnej innej dużej korzyści i najpierw wróciłem do bazy danych. Używam Red Gate Sql Compare, aby śledzić wszystkie delty.
Brian Ogden
0

Sądzę, że jest źle napisane w ich dokumentacji, dla mnie użyłem

Update-Database -Target MigrationName
Sayed Muhammad Idrees
źródło