2016-06-30 27 views
5

Ich arbeite an einem ASP.NET MVC-Projekt mit Entity Framework mit Code zuerst aus der Datenbank. Ich bekomme die Modelle für jede Tabelle in der Datenbank. Ich habe einige Änderungen in den Modellen, ermöglicht Migrationen und wenn ich die Migration initial bekomme ich einen Fehler:EF Migration Objekt existiert bereits Fehler

There is already an object named 'TableName' in the database."

ich mit update-database -force versucht, aber nicht helfen. Die anfängliche Migration erstellt die bereits vorhandenen Tabellen!

Wie die erste Migration die Änderungen auf die Modelle anwenden und nicht die Tabellen von Anfang an erstellen?

Und was ist die beste Vorgehensweise, um Änderungen zwischen Datenbank und Modellen in diesem Fall zu synchronisieren?

Antwort

11

versuchen, den

Add-Migration InitialCreate –IgnoreChanges 

Befehl in Package Manager-Konsole zu starten. Dies erstellt eine leere Migration mit dem aktuellen Modell als Snapshot. und führen Sie dann den Befehl in der Package Manager-Konsole aus. Dadurch wird die InitialCreate-Migration auf die Datenbank angewendet. Da die eigentliche Migration keine Änderungen enthält, wird einfach eine Zeile zur Tabelle __Migrationshistorie hinzugefügt, die angibt, dass diese Migration bereits angewendet wurde.

siehe this

dann Ihre Modelle ändern und Migration hinzuzufügen.

ein weiterer Ansatz ist einfach den Code alle auf nach oben und unten Methoden Kommentar

+0

Arbeiten Sie gut funktionieren, stellen Sie sicher, aktualisieren Migration Feuer kommentieren, bis jetzt. Danke – Arianit

+0

gibt es eine Möglichkeit, die Modelle synchronisiert, wenn ich Änderungen in der Datenbank im SqlServer Management Sdutio mache? – Arianit

+0

Ich denke, dann müssen Sie die Modelle wie Sie in der Datenbank ersten Ansatz zu regenerieren –

1

Amr Alaa Lösung funktioniert, aber die Datenbank migrierte nicht auf das neueste Modell.

Hier ist, wie es funktioniert (automatische Migration verwenden):

  1. löschen Migrations Ordner
  2. Execute enable-Migrationen
  3. Setzen Sie diese beiden Eigenschaften auf true in der neu geschaffenen Configuration.cs

    public Configuration() 
    { 
        AutomaticMigrationsEnabled = true; 
        AutomaticMigrationDataLossAllowed = true; 
    } 
    
  4. Ausführen Update-Datenbank -Force

Ihre Datenbank wird auf den neuesten Stand gebracht und fertig.

hoffe das hilft.

1

Beste und für mich arbeiten Idee den gesamten Code in Up- und Down-Funktionen von Initial Migrationsdatei und dann dotnet ef database update sollte dies vor Auskommen erste Migration

+0

Es funktionierte für mich, aber mit 'dotnet ef Datenbankupdate' – Maxime

+0

@Maxime danke ich aktualisierte die Antwort war dummer Fehler –

Verwandte Themen