Verwendung des EF4-Codes Zuerst: Wie kann ich das Modell ändern, ohne Daten zu verlieren?

8

In meinem Global.asax habe ich die folgende Zeile:

%Vor%

Wenn ich das nicht habe, dann wird die Datenbank sdf nicht die richtige Struktur haben, wenn ich das Modell ändere. Das ist in einer Entwicklungsumgebung in Ordnung, aber wenn ich in die Produktion gehe und ein DB Strukturupdate möchte, kann ich es mir natürlich nicht leisten, die Tabelle fallen zu lassen und die Daten zu verlieren.

Ist es möglich, DB Änderungen zu schreiben und dieses Update vor der Bereitstellung des Modells mit der geänderten Struktur auszuführen?

    
JAG 03.05.2011, 13:17
quelle

1 Antwort

12

Initialisierer ist für die Entwicklung. Ich betrachte jeden automatischen Prozess, der Ihre Produktionsdatenbank direkt von der Anwendung als böse ändert. Jemand anders kann einfach die Existenz vergessen, eine einzelne .dll neu bereitstellen und Ihre Datenbank ist weg.

Die Datenbankaktualisierung ist eine Operation, die separat als Teil des Upgrade-Skripts, des Installationspakets oder des manuellen Upgrades während der Anwendungswartung und nicht während der ersten Anforderung der neuen Version ausgeführt werden sollte. Ich habe gestern die Migration beschrieben.

Was Sie suchen, ist ein benutzerdefinierter Initializer, der ein externes Skript ausführen würde, das in meiner verknüpften Antwort erstellt wurde. Das kann teilweise funktionieren, wenn Sie viele zusätzliche Prüfungen hinzufügen, die das Ausführen von Skripts vermeiden. Aber warum? Sobald Sie ein Skript haben, können Sie es einfach ausführen, sobald Sie fertig sind.

    
Ladislav Mrnka 03.05.2011, 13:57
quelle