Ich bin neu in EF5 Code First und ich bastle mit einem Proof-of-Concept, bevor ich ein Projekt bei der Arbeit beginne.
Ich habe ursprünglich ein Modell erstellt, das ungefähr wie
aussieht %Vor%Und ich fügte ein paar Datensätze mit einer kleinen MVC-Anwendung, die ich oben steckte.
Nun möchte ich die Location-Spalte in eine Enum ändern, etwa wie folgt:
%Vor%Wenn ich die neue Migration hinzufüge, bekomme ich:
%Vor%aber wenn ich update-database ausführe bekomme ich einen Fehler
%Vor%Gibt es in der Migration eine Möglichkeit, die Tabelle zu kürzen, bevor die alter-Anweisung ausgeführt wird?
Ich weiß, ich kann die Datenbank öffnen und manuell tun, aber gibt es einen klügeren Weg?
Der schlaueste Weg ist wahrscheinlich, Typen nicht zu ändern. Wenn Sie dies tun müssen, empfehle ich Ihnen, die folgenden Schritte auszuführen:
Sql()
, um die Daten aus der ursprünglichen Spalte mit einer update-Anweisung Dies kann alles in derselben Migration erfolgen, das korrekte SQL-Skript wird erstellt. Sie können Schritt 2 überspringen, wenn Sie möchten, dass Ihre Daten verworfen werden. Wenn Sie es übernehmen möchten, fügen Sie die entsprechende Anweisung hinzu (kann auch eine switch-Anweisung enthalten).
Leider bieten Code First Migrations keine einfacheren Möglichkeiten, dies zu erreichen.
Hier ist der Beispielcode:
%Vor%Tags und Links c# entity-framework-5 code-first-migrations ef-code-first