Ich verwende EF Code First mit EF 5 in VS 2012. Ich verwende den PM- update-database
Befehl und habe eine einfache Seed-Methode, um einige Tabellen mit Beispieldaten zu füllen.
Ich möchte meine x.mdb löschen und neu erstellen. Der Update-Verlauf scheint nicht synchron zu sein. Wenn ich alle meine DBSets in meinem Kontext auskommentiere, wird sie update-database
fehlerfrei ausgeführt, es verbleiben jedoch einige Tabellen in der Datenbank . Da ich keine wertvollen Daten in der Datenbank habe, scheint es am einfachsten zu sein, alles zurückzusetzen.
Wie kann ich das erreichen?
quelle
Wenn Sie mit dem Befehl richtig gearbeitet haben, um Ihre Migrationen zu erstellen
Add-Migration "Name_Of_Migration"
, können Sie Folgendes tun, um einen sauberen Start zu erzielen (Zurücksetzen, natürlich mit Datenverlust ):Update-database -TargetMigration:0
Normalerweise ist Ihre Datenbank jetzt leer, da die Down-Methoden ausgeführt wurden.
Update-database
Dadurch wird Ihre Datenbank für Ihre aktuelle Migration neu erstellt
quelle
Update-Database 0
. Beachten Sie, dass dies für den Fall des OP fraglich ist, in dem "Der Aktualisierungsverlauf scheint nicht synchron zu sein" . Bei diesem Ansatz wird die "Down" -Migration für jede bisher auf die Datenbank angewendete Migration ausgeführt. Wenn Sie also eine zuvor angewendete Migration gelöscht haben, schlägt dies fehl (und es kann ebenfalls fehlschlagen, wenn Sie eine Migration danach geändert haben anwenden). Die akzeptierte Antwort kann daher vorzuziehen sein, da sie funktioniert, egal wie sehr Sie Ihre Migrationen versaut haben.Single Liner zum Löschen, Erstellen und Seed von der Package Manager-Konsole:
Kaboom.
quelle
Update-Database 0
. Unabhängig davon passt dies nicht zu dem Fall des OP, in dem "Der Update-Verlauf scheint nicht synchron zu sein" . Bei diesem Ansatz wird die "Down" -Migration für jede bisher auf die Datenbank angewendete Migration ausgeführt. Wenn Sie also eine zuvor angewendete Migration gelöscht haben, schlägt dies fehl (und es kann ebenfalls fehlschlagen, wenn Sie eine Migration danach geändert haben anwenden). Die akzeptierte Antwort ist robuster. -1 dafür und die ungeklärte Wiederholung vonupdate-database -force
.Für EntityFrameworkCore können Sie Folgendes verwenden:
Dadurch werden alle Migrationen aus der Datenbank entfernt. Dann können Sie verwenden:
So entfernen Sie Ihre Migration. Schließlich können Sie Ihre Migration neu erstellen und auf die Datenbank anwenden.
Getestet auf EFCore v2.1.0
quelle
Wie wäre es mit ..
Ich habe dies aus dem Programming Entity Framework übernommen: Code First , S. 28 First Edition.
quelle
Wenn Sie Ihre Datenbank gemäß diesem Lernprogramm erstellt haben: https://msdn.microsoft.com/en-au/data/jj193542.aspx
... dann könnte das funktionieren:
.mdf
und.ldf
Dateien in Ihrem Projektverzeichnisquelle
Führen Sie die folgenden Schritte aus:
Dbset<Item> Items{get;set;}
und führen Sie diese Befehle in der Nuget Console ausEs werden Tabellen gelöscht, die nicht im Kontext vorhanden sind, aber bereits in der Datenbank erstellt wurden
quelle
dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
quelle
Lassen Sie mich bei der Aktualisierung der Antworten hier helfen, da neue Benutzer dies nützlich finden. Ich glaube, das Ziel ist es, die Datenbank selbst zu löschen und sie mit dem EF Code First-Ansatz neu zu erstellen. 1.Öffnen Sie Ihr Projekt in Visual Studio mit der Erweiterung ".sln". 2.Wählen Sie Server Explorer (häufig links). 3.Wählen Sie SQL Server Object Explorer. 4.Die Datenbank, die Sie löschen möchten, wird in einer der lokalen Datenbanken aufgeführt. Klicken Sie mit der rechten Maustaste darauf und wählen Sie Löschen.
quelle
update-database
wurde und da er das Seeding erwähnt, gehe ich davon aus, dass sie nach einer automatisierten Lösung zum Testen suchten. Daher ist Ihre UI-Lösung wahrscheinlich nicht das, wonach sie suchen.Da diese Frage eines Tages von neuen EF Core-Benutzern angeklickt wird und ich die Top-Antworten als unnötig destruktiv empfinde, werde ich Ihnen einen Weg zeigen, wie Sie "neu" anfangen können. Beachten Sie, dass dadurch alle Ihre Daten gelöscht werden.
dotnet ef database update
quelle