8

Ich habe ein Problem, für das ich im Internet keine Antwort finden konnte.EF 4.3 Migration - Wie erstellt man ein Downgrade-Skript?

Ich verwende CodeFirst EF 4.3.1 Migrationen mit MsSQL.

Ich habe mehrere Migrationen hinzugefügt und möchte nun ein Skript für das Upgrade/Downgrade zwischen zwei Migrationen erstellen.

Für Upgrade betreibe ich den folgenden Befehl ein, die erfolgreich ein Upgrade-Skript reproduziert:

PM> Update-Database -Script -SourceMigration:"201205161144187_AddPostAbstract" -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

jedoch für Herabstufung ich den folgenden Befehl ausführen, die mit dem folgenden Fehler fehl:

PM> Update-Database -Script -SourceMigration:"201205161203310_BlogLimitsAndTableRename" -TargetMigration:"201205161144187_AddPostAbstract" 
Scripting the downgrade between two specified migrations is not supported. 

Irgendwelche Ideen Wie kann ich ein Downgrade-Skript generieren?

Danke.

Antwort

10

Es sieht so aus, als ob die Migrations-API erwartet, dass Sie nur von der "letzten Version" herunterstufen möchten.

Wenn BlogLimitsAndTableRename ist Ihre letzte Migration (die letzte angewandte) können Sie einfach laufen:

Update-Database -Script -TargetMigration:"201205161144187_AddPostAbstract" 

Wenn es nicht die letzte Migration ist, dass Sie benötigen, um Ihre Entwicklungsdatenbank, um es wiederherzustellen zuerst:

Update-Database -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

und jetzt sollten Sie in der Lage sein, den ersten Befehl zu verwenden, um ein Skript zu erhalten.

+0

Es macht Sinn. Stellen Sie sich vor, Sie haben eine Datenbank im Zustand 5 und Sie versuchen, ein Skript zum Herunterstufen von 4 auf 3 zu bekommen. Dann kann die Datenbank leicht beschädigt werden. Wenn Sie es entweder auf db im Zustand 4 oder auf einen Zustand 4 im Zustand 4 setzen, werden Sie darüber nachdenken, bevor Sie irreversible Fehler machen. OTOH könnte es mit einigen -Force Schalter oder große rote Warnung unterstützt werden. :) –

+1

Ich dachte über die Datenbank im Zustand 5 und jetzt ein Skript, um es von 5 auf 2 herabstufen. EF-Migration zwingt mich, von 5 auf 4 herabstufen, dann von 4 auf 3 und dann von 3 auf 2 herabstufen, während alles, was ich wünsche, ist, ein einzelnes Skript zu produzieren, das alle diese Herabstufungen bereits enthält, ohne sie wirklich ausführen zu müssen. (Für ein Upgrade zum Beispiel können Sie eine Datenbank im Zustand 5 haben und ein Upgrade-Skript von 2 bis 5 erstellen). – mayash

+0

Oder Sie können eine Datenbank im Zustand 5 haben und ein Upgrade-Skript von 2 bis 4 erstellen. – mayash

Verwandte Themen