Zepsułem migracje, użyłem IgnoreChanges
przy pierwszej migracji, ale teraz chcę usunąć wszystkie moje migracje i rozpocząć od pierwszej migracji z całą logiką.
Kiedy usuwam migracje w folderze i próbuję Add-Migration
nie generuje pełnego pliku (jest pusty - ponieważ nie wprowadziłem żadnych zmian od czasu mojej ostatniej, ale teraz usuniętej migracji).
Czy jest jakieś polecenie Wyłącz migrację , aby móc ponownie uruchomić Enable-Migrations
?
Odpowiedzi:
Musisz :
__MigrationHistory
tabelę z bazy danych (może znajdować się pod tabelami systemowymi); NastępnieUruchom następujące polecenie w konsoli Menedżera pakietów:
Używaj z lub bez
-EnableAutomaticMigrations
I wreszcie możesz uruchomić:
źródło
Problem: zlikwidowałeś migracje i chcesz je zresetować bez usuwania istniejących tabel.
Problem: Nie można zresetować migracji z istniejącymi tabelami w bazie danych, ponieważ EF chce tworzyć tabele od zera.
Co robić:
Usuń istniejące migracje z tabeli Migrations_History.
Usuń istniejące migracje z folderu migracji.
Uruchom reset migracji migracji. Spowoduje to utworzenie migracji w folderze Migracja, która obejmuje tworzenie tabel (ale nie uruchomi go, więc nie spowoduje błędu).
Teraz musisz utworzyć początkowy wiersz w tabeli MigrationHistory, aby EF miał migawkę bieżącego stanu. EF zrobi to, jeśli zastosujesz migrację. Nie można jednak zastosować właśnie wykonanej migracji, ponieważ tabele już istnieją w bazie danych. Przejdź do Migracji i skomentuj cały kod w metodzie „W górę”.
Teraz uruchom aktualizację bazy danych. Zastosuje migrację (nie zmieniając bazy danych) i utworzy wiersz migawki w MigrationHistory.
Zresetowałeś teraz migracje i możesz kontynuować normalne migracje.
źródło
Co powiesz na
w konsoli Menedżera pakietów? Powinien zresetować wszystkie aktualizacje do bardzo wczesnego stanu.
Odnośnik: Migracje pierwszego kodu - Migracja do określonej wersji (w tym obniżenie wersji)
źródło
Aby to naprawić, musisz:
Usuń wszystkie pliki * .cs z folderu migracji.
Usuń tabelę _MigrationHistory w bazie danych
Biegać
Enable-Migrations -EnableAutomaticMigrations -Force
Biegać
Add-Migration Reset
Następnie w
public partial class Reset : DbMigration
klasie musisz skomentować wszystkie istniejące i bieżące tabele:Jeśli przegapisz ten bit, wszystko zawiedzie i musisz zacząć od nowa!
Update-Database -verbose
Powinno to zakończyć się powodzeniem, jeśli poprawnie wykonałeś powyższe czynności, a teraz możesz kontynuować normalnie.
źródło
Biorąc pod uwagę to, że wciąż pojawia się, gdy szukamy EF w .NET Core, opublikuję tutaj swoją odpowiedź (ponieważ bardzo mnie prześladuje). Zauważ, że istnieją pewne subtelności w wersji EF 6 .NET (Bez polecenia początkowego i trzeba będzie usunąć pliki „Migawka”)
(Testowane w .NET Core 2.1)
Oto kroki:
_efmigrationhistory
tabelę.ApplicationDbContextSnapshot.cs
i usuń je.Add-Migration InitialMigration
Uwaga: musisz usunąć WSZYSTKIE pliki migawek . Spędziłem niezliczone godziny po prostu usuwając bazę danych ... Jeśli to nie zrobisz, wygeneruje pustą migrację.
Ponadto w punkcie 3 możesz po prostu nazwać swoją migrację, jak chcesz.
Oto kilka dodatkowych zasobów: asp.net CORE Migracje wygenerowane puste
Zresetuj migracje Entity Framework 7
źródło
W EntityFramework 6 spróbuj:
w celu zaktualizowania początkowego pliku migracji.
źródło
W Entity Framework Core.
źródło
Mój problem polegał na tym, że ręcznie usunąłem folder Migracje. Zrobiłem to, ponieważ chciałem wykonać kopię zapasową zawartości, więc po prostu wyciągnąłem folder z projektu. Później rozwiązałem problem, umieszczając go ponownie (po utworzeniu kopii zapasowej), a następnie usuwając folder Migracje, klikając go prawym przyciskiem myszy w Eksploratorze rozwiązań i wybierając polecenie Usuń z menu podręcznego.
źródło
W EF6
Add-Migration Initial
.źródło
Usuń ten
Migrations
folder,Clean
a następnieRebuild
projekt. To zadziałało dla mnie. Przed Clean and Rebuild mówiono, że migracja już istnieje, ponieważ w pamięci podręcznej nie została jeszcze usunięta.źródło
Ta metoda nie wymaga usunięcia
__MigrationHistory
tabeli, więc nie musisz wkładać bazy danych do wdrożenia.Add-Migration ResetMigrations
Up()
metodzie:źródło
W Net Core 3.0:
Nie udało mi się znaleźć sposobu na zresetowanie migracji .
Miałem też problemy z uszkodzonymi migracjami, a podane tutaj odpowiedzi nie działały dla mnie. Mam internetowy interfejs API .Net Core 3.0, a gdzieś w ostatnim miesiącu bezpośrednio edytowałem bazę danych. Tak, zrobiłem coś złego, złego.
Sugerowane tutaj strategie spowodowały szereg błędów w konsoli Menedżera pakietów:
To prawda, że mogłem pominąć krok lub wyczyścić prawidłowe pliki, ale odkryłem, że istnieją sposoby na oczyszczenie tego bez tak brutalnej siły:
Teraz, gdy web API jest uruchamiane z pustą bazą danych, poprawnie tworzy wszystkie tabele i właściwości pasujące do modeli encji.
HTH!
źródło
AKTUALIZACJA 2020
ApplicationDbContext => Twój kontekst.
źródło
źródło