2009-03-25 8 views
6

Ich habe gerade angefangen, NHiberate zu lernen. Es scheint ziemlich mühsam, für jede Datenbanktabelle die korrekten Konfigurationsdateien hbm.xml zu schreiben.Verwendung von NHibernate mit Codesmith zum Erzeugen von ORM

Die Frage ist, kann NHibernate in Tabellen lesen und automatisch Beziehungen und benötigte Konfigurationsdatei sowie Datenbank-Mapper-Klassen für Sie abrufen? Es scheint, dass der Programmierer anfänglich noch viel Bodenarbeit leisten muss. Dann stieß ich auf Codesmith, der Vorlagen für NHiberate bekam? Wird die Lücke geschlossen?

Antwort

4

Sie können Code-Vorlagen verwenden, aber dies schafft immer noch eine Pain IMHO. Der beste Weg ist, Fluent nHibernate zu verwenden. Sie haben eine neue Auto-Mapper-Funktion, die die Konfiguration per Konvention verwendet. Keine Zuordnungsdateien, es werden nur Annahmen getroffen, dass Sie ähnliche Namen verwenden, und Sie können Regeln definieren, wie ein Entitätsname in einen Tabellennamen konvertiert wird.

1

Code-Generierung kann diese Lücke wirklich gut füllen, begann ich mit CodeSmith, aber dann machten sie, dass ein Pay-Artikel, so zog ich zu MyGeneration. Mein Ansatz besteht darin, zuerst die DB anzugreifen, dann die Mapping-Dateien und Gen-Klassen zu codieren, wenn sie nicht bereits existieren. Das bringt schnell etwas in Gang, großartig für einen Prototyp und das Erstellen von Testdaten.

Die Mapping-Dateien, Klassen und DB werden oft dann von Hand geändert. In einigen Fällen habe ich versucht, die Codegenerierung als Teil von CI zu verwenden - aber es hat sich als schwierig erwiesen, dies zu tun, es sei denn, Sie werden diszipliniert darüber, wo Sie Codeänderungen von Hand vornehmen. Partielle Klassen waren eine Hilfe, aber immer noch ein Problem, um das ganze Team auf die gleiche Seite zu bringen, niemand mag es, wenn sein Code von einem Tool überschrieben wird, auch wenn Sie dann Rollback und Merge durchführen können.

+0

letztes Projekt, das ich an diesem verwendeten Code war gen'ed das Code-Gen zur Hälfte ausgeschaltet, wenn wir den Generators nicht schnell genug halten konnten Aktualisierung .... – JoshBerke

+0

In Ihre Meinung, neben der Freiheit, ist MyGeneration eine bessere Code-Gen? – devXen

+0

Ich habe nicht genug Erfahrung mit CodeSmith oder anderen, ich finde es eigenartig aber gut. Es ist jetzt Open Source, und die Vorlagen sind in C# geschrieben - all das sind Pluspunkte. – MrTelly

1

Ich arbeite für CodeSmith ... Bitte beachten Sie, dass MyGeneration nicht für immer aktualisiert wurde, was bedeutet, dass es auch Unterstützung fehlt. CodeSmith unterstützt seine Produkte und Vorlagen vollständig. Das bedeutet, dass alle Template-Bugs ebenfalls von Codesmith repariert und überprüft werden.

Dank

-Blake Niemyjski

+0

Obwohl ich zustimme, dass MyGeneration seit Jahren nicht mehr aktualisiert wurde, ist es im Hinblick auf die vollständige Offenlegung erwähnenswert, dass Sie ein aktiver Entwickler von CodeSmith sind. – furtive

+0

Ja, das stimmt. Ich habe die meisten meiner Beiträge aktualisiert, um dies anzuzeigen. –