Frage

Ich würde gerne Code First-Migrationen in mein Projekt einführen, bin mir aber nicht sicher, wie ich dies zum Testen auf meinem Kunden bereitstellen soll.Bisher waren die Dinge recht einfach und ich habe einfach eine verwendet CreateDatabaseIfNotExists Initialisierer.Jetzt habe ich zwei Szenarien:

  1. Er löscht seine vorhandene Datenbank vor den Migrationen und verwendet einen Initialisierer, um eine neue Datenbank mit den Migrationen zu erstellen. Von hier an verwenden wir Migrationen, um seine Datenbank zu aktualisieren.Kann ich das verwenden? MigrateDatabaseToLatestVersion Initialisierer zum Erstellen der Datenbank, falls nicht vorhanden?

  2. Ich stelle einfach meinen Code bereit und lasse ihn Migrationen durchführen.Ich bin mir nicht ganz sicher, ob überhaupt etwas anderes möglich ist als die Verwendung von a MigrateDatabaseToLatestVersion ist hier erforderlich.Wird dadurch eine Datenbank vor der Migration auf eine Datenbank aktualisiert, die für Migrationen geeignet ist?

War es hilfreich?

Lösung

Das mache ich, wenn eine automatische Migration erforderlich ist;Ich hoffe, das hilft Ihnen bei der Lösungsfindung:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
    );
Database.Initialize(false);

In der Konfigurationsdatei für die Migrationen habe ich im Konstruktor Folgendes eingestellt

AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;

In der Konfigurationsdatei sollte eine Überschreibung der Seed-Methode vorhanden sein. Andernfalls können Sie diese hinzufügen und Ihre Seed-Daten eingeben.

Mit den oben genannten Schritten wird die Datenbank auf den neuesten Stand erstellt/aktualisiert, solange kein Datenverlust auftritt.Dies sollte es Ihnen ermöglichen, den Code an den Client weiterzugeben.


Nebenbei bemerkt: Bei einem Produktionssystem plädiere ich normalerweise dafür, dies nicht zu tun.Dies hatte viele Nachteile.Bei Datenbanken, über die ich keine Kontrolle habe, habe ich noch keinen Client gefunden, der die generierte Skriptdatei abgelehnt hat.

Sie können dies erreichen, indem Sie den folgenden Befehl verwenden, nachdem Sie eine Migration über die Paket-Manager-Konsole hinzugefügt haben:

Update-database –script -verbose
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top