2013-09-27 7 views
5

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:

  1. 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]
  2. run schemamigration Befehl, den Migrationscode [Migrationscode generiert automatisch ist python] und es zu „Migration“ Unterverzeichnis schreibt.
  3. 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.
  4. Lauf Migrate-Befehl, der das „Migration“ Verzeichnis sucht und führt alle Migrationen, die noch nicht ausgeführt wurden
  5. (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;)

Antwort

3

Ich weiß nicht, ob das wirklich Ihre Frage beantwortet, aber um Schemaänderungen zu automatisieren und Ihre Mappings zu aktualisieren oder sogar Ihre Mappings zu entwerfen, ist es eine gute Idee Werkzeuge dafür zu verwenden . Vor allem, wenn Sie ein sehr großes Datenbank-/Domänenmodell haben.

arbeite ich zur Zeit mit dem entity developer from devart.

Wir verglichen mehrere ähnliche Werkzeuge, die da draußen sind, aber dieses wirklich rockt. Es hat nur so viele Funktionen und bietet auch die Funktion benutzerdefinierter T4-Vorlagen hinzufügen zu erzeugen, was Sie aus Ihren Modellen wollen und fügen Sie sogar benutzerdefinierte Modell-Designer-Attribute, die dann innerhalb des Codegenerators Teil verwendet werden ...

Sie können Ihre Entitäten/Eigenschaften auch manuell in etwas lesbareres umbenennen, und das Tool behält dies auch nach Aktualisierungen aus dem Datenbankschema bei ...

Und natürlich unterstützt es sowohl, Modell oder Datenbank erster Ansatz ...

Sie können eine Testversion von Ursache, um herauszufinden, ob diese Ihren Bedürfnissen passen würde ...

0

Werkzeug wie LLBLGen kann hier helfen .. LLBLGen Pro ist eine Datenzugriffslösung. Mit dem LLBLGen Pro Designer erstellen Sie das Entity/Domain-Modell, definieren die Mappings und generieren Quellcode für eines der vier unterstützten O/R-Mapping Frameworks: Entity Framework, das LLBLGen Pro Runtime Framework, NHibernate und Linq to SQL.