Ich möchte nur eine kurze Umfrage machen, um zu sehen, ob Fluent Nhibernate gut ankommt oder ob es viele Probleme gibt. Ich mag Nhibernate, aber ich sehe definitiv das Problem mit Xml, um Mapping zu tun.
Ich freue mich daher auf Community-Mitglieder, die mir einen Einblick gewähren und mir dabei helfen, einen über den anderen auszuwählen.
Ich betrachte zu diesem Zeitpunkt weder linq2sql noch das Entity-Framework.
Ich mag Fluent NHibernate und ich denke, es ist reif genug, wenn Sie ein neues Projekt starten. Wenn Sie es für ein neues Projekt verwenden, sollte das Fluent-NHibernate-Projekt im Laufe Ihrer Entwicklung weiter reifen können. Es gibt eine Möglichkeit, Änderungen zu brechen (wie kürzlich bei den Convention-Mappings), aber Sie sollten damit umgehen können. Ich hatte ein paar Probleme mit den Mappings, aber das Projekt reagiert ziemlich gut auf Fehlerberichte und hat größtenteils wie erwartet funktioniert.
Die Zuordnungsoptionen sind:
Xml-Zuordnungen - Standard von NHibernate. Die Probleme bei der Wartung sind bekannt, der Vorteil besteht jedoch darin, dass Sie Zugriff auf alle von NHibernate bereitgestellten Konfigurationsoptionen haben. Es gibt einige weniger genutzte Konfigurationsoptionen, die zu Fluent hinzugefügt werden (zumindest beim letzten Mal, als ich darauf geachtet habe). Also, wenn Sie einige verrückte Mappings erwarten, sollten Sie diese Option in Betracht ziehen.
Standardzuordnung - von Fluent bereitgestellt. Sie können die Zuordnungen über Code erstellen und sind viel besser zum Refactoring und zum Authoring geeignet. Nach meiner Erfahrung gibt es nicht viel zu sagen, außer dass es gut funktioniert und eine große Verbesserung gegenüber der XML-Option darstellt.
Automatische Zuordnung - von Fluent bereitgestellt. Ermöglicht Ihnen, Objekteigenschaften nach Konvention zuzuordnen und versucht, die Zuordnungen automatisch zu erstellen. Es ist eine gute Idee, aber ich denke, es hat noch etwas Reifung zu tun. Ich verwende derzeit diese Mapping-Methode und es funktioniert gut, aber ich habe am Ende geschrieben eine große Anzahl von Konventionen und die Objekt-Beziehungen, die es fühlt sich nicht wie es viel Mühe von den Standard-Mappings gespeichert ist.
Fluent NHibernate bietet außerdem hilfreiche Testhelfer zum Testen Ihrer Zuordnungen und einige Konfigurations-APIs, die die Konfiguration von NHibernate erleichtern. Alles in allem ist es ein gutes Projekt und es bietet einige schöne zusätzliche Funktionen für NHibernate.
bearbeiten:
Noch eine Anmerkung: Wenn Sie mit Fluent NHibernate beginnen und entscheiden, dass es für Ihr Szenario nicht funktioniert, können Sie problemlos zu den XML-Mappings zurückkehren. Fluent NHibernate ermöglicht Ihnen, die erstellten Zuordnungen zu exportieren, und Sie können diese Exporte verwenden, um die von Ihnen bereits durchgeführten Zuordnungsarbeiten nicht zu verlieren.
Einer der besten Vorteile der Verwendung von Fluent-Nibernat gegenüber NH-Vanille ist ein schöner Integrationstest mit PersistenceSpecification <T
& gt;:
Ich habe ein neues Projekt von mir fließend benutzt. Der einzige kleine Schlag, den ich bis jetzt getroffen habe, ist, dass es mit Castle Windsor nicht so gut funktioniert, aber es war ziemlich einfach, Windsor auszudehnen, um den Job zu machen. Ansonsten habe ich es geliebt. Es ist viel prägnanter als die XML-Mappings.
Das Schöne an fließend ist, dass es keine All-oder-Nichts-Investition ist. Sie können die meisten Mappings flüssig schreiben, und wenn Sie Probleme finden, können Sie diese Klassen im Standard-XML-Mapping zuordnen, bis die fließenden Probleme gelöst sind.
Wie jede gute Antwort, es kommt darauf an.
Ich habe nicht so viel Laufleistung aus den Automapping-Funktionen, wie ich es mir gewünscht hätte. Ich muss oft mit bereits vorhandenen Datenbanken arbeiten.
Ich hatte bereits mehrere Projekte mit NHibernate unter meinem Gürtel, also war die Verwendung des hbm-Mappings nicht schwierig. Nachdem ich herausgefunden hatte, wie man in das hbm-Schema einbaut, war es viel einfacher.
Der einzige Vorteil, den ich durch die Verwendung von fluent-nhibernate gewonnen habe, ist, dass ich meine Domain-Klassen umgestalten und meine Mappings automatisch ändern kann. Ich habe nicht wirklich bemerkt, dass die Geschwindigkeit beim Schreiben der Abbildungen viel höher ist.
Wie alles, YMMV.
Ich benutze FNH für ein neues Projekt. Was mir am besten gefällt, ist die Möglichkeit, die Datenbank direkt aus den Entitätsklassen zu generieren und zu erstellen.
Ich musste einige Konventionen für die Eigenschaften schreiben, aber ich würde lieber mehr als eine Liste für jede Klasse verwalten.
Tags und Links fluent-nhibernate