TL, DR gibt es ein Tool zum Verwalten (automatisch erstellen, Ausführen) von Migrationen (mit nativen .NET-Sprache) für NHibernate?NHibernate Code-First Migration Management Tool wie EntityFramework, Django-South
Ich komme aus Django Hintergrund, welche Code-First zu entwickeln, fördert. Es gibt auch die De-facto-Industriestandard-Bibliothek für Migrationen namens South. Der typische Arbeitsablauf das Schemas zum Ändern folgt:
- der Modell-Code ändern (das heißt, hinzufügen/entfernen/ändern Klassen und/oder Eigenschaften) [natürlich Modell-Code ist in der Muttersprache app - hier: python]
- run schemamigration Befehl, den Migrationscode [Migrationscode generiert automatisch ist python] und es zu „Migration“ Unterverzeichnis schreibt.
- Wenn nötig, stimmen Sie den automatisch generierten Code ab. Der Auto-Generator ist ziemlich intelligent, aber nicht intelligent genug, um beispielsweise die Umbenennung von Spalten zu handhaben.
- Lauf Migrate-Befehl, der das „Migration“ Verzeichnis sucht und führt alle Migrationen, die noch nicht ausgeführt wurden (diese Migrationsgeschichte Tabelle herausgefunden wird)
Dies ist sehr praktisch, nicht nur für die Entwicklung (auch SCRUM, wo sich die Dinge so schnell ändern), aber auch um die Produktion zu aktualisieren - stellen Sie sicher, dass die Migrationen auf Dev-Maschinen und Produktionsserver getrennt bleiben. Es ist auch ziemlich sicher für die Produktion, da Sie die Migration überprüfen und optional ändern können, bevor Sie es anwenden.
Während ORMs für .NET Auswertung, ich habe 5 Entity Framework versucht, die - wie ich herausgefunden - hat eine sehr ähnliche Funktionalität wie die eines Django-Süd ist. Es gibt einen Package-Manager Console-Befehl zum Erstellen von Migrationscode, der vor der Ausführung geändert werden kann. Es gibt einen separaten Befehl, der alle noch nicht ausgeführten Migrationen ausführt und sie als im Migrationsverlauf ausgeführt markiert.
Gibt es ein Tool wie dieses für NHibernate?
Ich bin bewusst, SchemaUpdate
Funktionalität, aber AFAIK es nur aktualisiert alle Dinge, die in einem Schritt aktualisiert werden müssen. Ich würde das nicht in der Produktion verwenden, weder während der Entwicklung, wo der Datenverlust kein Desaster ist, sondern auch ein bisschen Schmerz. Ich weiß auch, dass SchemaUpdate verwendet werden kann, um die SQL-Anweisungen in eine Datei zu exportieren, anstatt sie auszuführen, aber es ist nicht so praktisch, da es keine automatische Verwaltung der Verlaufsmigration gibt. Plus, man muss SQL manuell schreiben;)