webentwicklung-frage-antwort-db.com.de

So löschen Sie eine vorhandene EF Code First-Datenbank und erstellen sie von Grund auf neu

Ich verwende EF Code First mit EF 5 in VS 2012. Ich verwende PM update-database Befehl und ich haben 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, update-database wird fehlerfrei ausgeführt, belässt jedoch einige Tabellen in der Datenbank. Da ich keine wertvollen Daten in der DB habe, scheint es am einfachsten, das alles zurückzusetzen.

Wie kann ich das erreichen?

68
g.pickardou

Wenn ich es richtig verstehe ...

Wenn Sie start clean Wollen:

1) DB manuell löschen - wo immer es ist (ich gehe davon aus, dass Sie Ihre Verbindung sortiert haben), oder leeren Sie es, aber einfacher/sicherer ist es, alles zusammen zu löschen - da es system __MigrationHistory -Tabelle - auch diese muss entfernt werden.

2) Entfernen Sie alle migration files - die unter Migrations stehen - und wie Zahlen usw. benannt sind - entfernen Sie alle,

3) Erstellen Sie Ihr Projekt ne enthält Migrationen (und den Rest) - und stellen Sie sicher, dass Ihr Projekt so eingerichtet ist (Konfiguration), dass es automatisch erstellt wird (was manchmal Probleme verursachen kann - aber für Sie unwahrscheinlich ist),

4) Führen Sie Add-Migration Initial Erneut aus - dann Update-Database

89
NSGaga

Wenn Sie die Migration mit dem Befehl Add-Migration "Name_Of_Migration" Korrekt erstellt haben, können Sie folgendermaßen vorgehen, um einen sauberen Start zu erhalten ( zurücksetzen, natürlich mit Datenverlust):

  1. Update-database -TargetMigration:0

    Normalerweise ist Ihre DB jetzt leer, da die down-Methoden ausgeführt wurden.

  2. Update-database

    Dadurch wird Ihre Datenbank für die aktuelle Migration neu erstellt

54
Daf De Giraf

Single Liner zum Löschen, Erstellen und Seed von Package Manager Console:

update-database -TargetMigration:0 | update-database -force

Kaboom.

26
Amadeo Gallardo

Für EntityFrameworkCore können Sie Folgendes verwenden:

Update-Database -Migration 0

Dadurch werden alle Migrationen aus der Datenbank entfernt. Dann können Sie verwenden:

Remove-Migration

So entfernen Sie Ihre Migration Schließlich können Sie Ihre Migration neu erstellen und auf die Datenbank anwenden.

Add-Migration Initialize
Update-Database

Getestet mit EFCore v2.1.0

17
Gizmo3399

Wie wäre es mit ..

static void Main(string[] args)
{
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());  
    // C
    // o
    // d
    // i
    // n
    // g
}

Ich habe das aufgegriffen von Programming Entity Framework: Code First , Pg 28 First Edition.

3
SAm

Wenn Sie Ihre Datenbank gemäß diesem Lernprogramm erstellt haben: https://msdn.Microsoft.com/en-au/data/jj193542.aspx

... dann könnte das klappen:

  1. Alles löschen .mdf und .ldf Dateien in Ihrem Projektverzeichnis
  2. Wechseln Sie zu View/SQL Server Object Explorer, und löschen Sie die Datenbank aus dem Unterknoten (localdb)\v11.0. Siehe auch https://stackoverflow.com/a/15832184/2279059
1
Florian Winter

dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();

0
Greck

Gehen Sie folgendermaßen vor:

  1. Lösche das Objekt, das aus dem Kontext gelöscht werden soll // Dbset<Item> Items{get;set;} und in Nuget Console führen Sie diese Befehle aus
  2. add-migration [contextName]
  3. update-Datenbank -verbose

Es werden Tabellen gelöscht, die nicht im Kontext vorhanden sind, aber bereits in der Datenbank erstellt wurden

0
Shaahin