Ich habe meine Migrationen IgnoreChanges
, ich habe IgnoreChanges
für die anfängliche Migration verwendet, aber jetzt möchte ich alle Migrationen löschen und mit einer anfänglichen Migration mit der gesamten Logik beginnen.
Wenn ich die Migrationen im Ordner lösche und versuche, Add-Migration
, wird keine vollständige Datei erstellt (sie ist leer - da ich seit meiner letzten, jedoch jetzt gelöschten Migration keine Änderungen vorgenommen habe).
Gibt es einen Befehl zum Deaktivieren von Migrationen , damit ich Enable-Migrations
erneut Enable-Migrations
kann?
Du musst :
__MigrationHistory
Tabelle in Ihrer Datenbank (möglicherweise unter __MigrationHistory
). Dann Führen Sie den folgenden Befehl in der Package Manager Console aus:
Enable-Migrations -EnableAutomaticMigrations -Force
Verwenden Sie mit oder ohne -EnableAutomaticMigrations
Und zum Schluss kannst du laufen:
Add-Migration Initial
Das Problem: Sie haben Ihre Migrationen zusammengesetzt und möchten sie zurücksetzen, ohne Ihre vorhandenen Tabellen zu löschen.
Das Problem: Sie können Migrationen mit vorhandenen Tabellen in der Datenbank nicht zurücksetzen, da EF die Tabellen von Grund auf erstellen möchte.
Was ist zu tun:
Löschen Sie vorhandene Migrationen aus der Tabelle "Migrations_History".
Löschen Sie vorhandene Migrationen aus dem Migrationsordner.
Führen Sie Add-Migration Reset aus. Dadurch wird eine Migration in Ihrem Migrationsordner erstellt, die das Erstellen der Tabellen beinhaltet (wird jedoch nicht ausgeführt, sodass keine Fehler auftreten.)
Sie müssen jetzt die erste Zeile in der MigrationHistory-Tabelle erstellen, damit EF eine Momentaufnahme des aktuellen Status anzeigt. EF führt dies aus, wenn Sie eine Migration anwenden. Sie können die gerade durchgeführte Migration jedoch nicht anwenden, da die Tabellen bereits in Ihrer Datenbank vorhanden sind. Gehen Sie also in die Migration und kommentieren Sie den gesamten Code in der Methode "Up" aus.
Führen Sie jetzt die Update-Datenbank aus. Es wendet die Migration an (ohne die Datenbank tatsächlich zu ändern) und erstellt eine Momentaufnahmezeile in MigrationHistory.
Sie haben jetzt Ihre Migrationen zurückgesetzt und können mit den normalen Migrationen fortfahren.