Gdy uruchamiam PM> Remove-Migration -context BloggingContext
w VS2015 z projektem ASP.NET Core przy użyciu EF Core, otrzymuję następujący błąd:
System.InvalidOperationException: The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration. at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Jak mogę go odrzucić? Używam najnowszej wersji ASP.NET Core 1.0, EF Core i VS2015 Update 3.
-force
na koniecOdpowiedzi:
Posługiwać się:
CLI
> dotnet ef database update <previous-migration-name>
Konsola menedżera pakietów
PM> Update-Database <previous-migration-name>
Przykład:
PM> Update-Database MyInitialMigration
Następnie spróbuj usunąć ostatnią migrację.
Usunięcie migracji bez aktualizacji bazy danych nie działa, ponieważ zastosowano zmiany w bazie danych.
Jeśli używasz PMC, spróbuj: PM> update-database 0 Spowoduje to wyczyszczenie bazy danych i umożliwi usunięcie migawki migracji z rozwiązania
źródło
dotnet ef database update MyFirstMigration --context BloggingContext
tego, który działał pomyślnie. Następnie uruchomiłem,dotnet ef migrations remove --context BloggingContext
który dał mi ten sam komunikat o błędzie, co w moim pościeMyFirstMigration
. Jeśli jest to pierwsza migracja (jak sama nazwa wskazuje), możesz użyćdotnet ef database update 0
do cofnięcia (cofnięcia) wszystkich migracji z bazy danych. Powinieneś być wtedy w stanie biegaćdotnet ef migrations remove
.dotnet ef migrations remove
po tymAby całkowicie usunąć wszystkie migracje i zacząć od nowa, wykonaj następujące czynności:
źródło
dotnet ef database update 0
, ale uruchomieniedotnet ef migrations remove
później spowoduje usunięcie domyślnej migracji tożsamości, co może nie być pożądane.dotnet ef database update 0
! Nigdzie nie widziałem tego wspomnianego ...The migration '20180618103514_InitialMigration' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Nadal możesz użyć
Update-Database
polecenia.Jednak sądząc po nazwie twojej migracji, zakładam, że jest to pierwsza migracja, więc to polecenie może nie działać. Powinieneś móc usunąć wpis z
__MigrationHistory
tabeli w bazie danych, a następnieRemove-Migration
ponownie uruchomić komendę. Możesz także usunąć plik migracji i zacząć od nowa.źródło
Update-Database
z konsoli zarządzania pakietami lubdotnet ef database update
z wiersza polecenia z katalogu projektu.<migration name>
powinna to być nazwa migracji, do której chcesz wrócić (tj. Prawdopodobnie migracja przed tą, którą schrzaniłeś), a nie nazwa migracji, którą chcesz cofnąć.Aby cofnąć zastosowanie określonej migracji :
Aby cofnąć wszystkie migracje :
Aby usunąć ostatnią migrację:
Aby usunąć wszystkie migracje:
po prostu usuń
Migrations
folder.Aby usunąć kilka ostatnich migracji (nie wszystkie):
Nie ma polecenia, aby usunąć kilka migracji i nie możemy po prostu usunąć tych kilku
migrations
i ich*.designer.cs
plików, ponieważ musimy utrzymać plik migawki w spójnym stanie. Musimy usuwać migracje pojedynczo (patrzTo remove last migration
wyżej).Aby wycofać wniosek i usunąć ostatnią migrację:
źródło
unapply
wszystkich tych postach. Po prostu dotarło do mnie, że to nie jest termin techniczny, to słowoun - apply
Aby cofnąć ostatnią zastosowaną migrację, należy (polecenia konsoli menedżera pakietów):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : Drugi krok wydaje się nie być wymagany w najnowszych wersjach programu Visual Studio (2017).
źródło
Remove-Migration
bez problemu. Nie jestem pewien, co powiedziałeś „zostanie ponownie zastosowane w następnym kroku”!dbContext.Database.Migrate()
do swojego startup.csPo prostu możesz kierować migrację według wartości
Następnie idź dalej i usuń go
źródło
Aby „cofnąć zastosowanie” ostatniej (najnowszej?) Migracji po jej zastosowaniu w bazie danych:
Mam nadzieję, że to pomoże i ma zastosowanie do każdej migracji w projekcie ... Przetestowałem to tylko dla najnowszej migracji ...
Miłego kodowania!
źródło
W konsoli Menedżera pakietów:
Update-Database Your_Migration_You_Want_To_Revert_To
Więcej opcji i wyjaśnienie, jak cofnąć migracje, można zobaczyć tutaj
źródło
Należy usunąć rekord migracji „20160703192724_MyFirstMigration” z „_EFMigrationsHistory” tabeli .
w przeciwnym razie to polecenie usunie migrację i usunie folder migracji:
źródło
Ogólnie rzecz biorąc, jeśli używasz konsoli menedżera pakietów, właściwym sposobem usunięcia określonej migracji jest odwołanie się do nazwy migracji
Innym sposobem usunięcia ostatniej migracji, którą zastosowałeś zgodnie z dokumentami, jest użycie polecenia:
To polecenie należy wykonać z wiersza polecenia programisty ( jak otworzyć wiersz polecenia ) w katalogu rozwiązania.
Na przykład, jeśli Twoja aplikacja ma nazwę „Aplikacja” i znajduje się w folderze c: \ Projekty. Twoja ścieżka powinna więc wyglądać następująco:
źródło
Aby cofnąć zastosowanie migracji w EF Core 1.0, użyj polecenia:
aktualizacja bazy danych dotnet ef {migracja_name}
Użyj nazwy migracji, do której chcesz zachować zmiany. Listę nazw migracji można znaleźć za pomocą:
Lista migracji dotnet ef
źródło
Aby cofnąć wszystkie migracje zastosowane do DB, po prostu uruchom:
Następnie należy uruchomić
Remove-Migration
tyle razy, ile plików migracji jest widocznych w katalogu Migration. Polecenie usuwa najnowszą migrację, a także aktualizuje migawkę.źródło
najpierw uruchom następujące polecenie:
a następnie uruchom ten:
koniec
źródło
źródło
1. znajdź tabelę „dbo._EFMigrationsHistory”, a następnie usuń rekord migracji, który chcesz usunąć. 2. uruchom „usuń-migrację” w PM (konsoli menedżera pakietów). Pracuje dla mnie.
źródło