26

Ich komme aus einem Entity Framework und LLBL Hintergrund für meine ORM-Tools.Unterschied zwischen FluentNHibernate und NHibernate "Mapping von Code"

Ich wurde gebeten, ein neues System basierend auf NHibernate zu bauen. Ich habe es noch nie getan, also komme ich mit frischen Augen an.

Was ist der Unterschied zwischen dem Mapping mit Fluent NHibernate und "Mapping By Code" in NHibernate? Gibt es eine Präferenz?

+2

Dies ist nicht zu konstruktiv glaube ich. Warum lernst du nicht NH und siehst selbst, was die Unterschiede sind? ** Übrigens, ich lerne Java und habe Hintergrund in C#, was sind die Unterschiede? ... ** – gdoron

+2

Ich glaube, er bezieht sich speziell auf das Mapping. +1 um den Downvote auszugleichen und die Frage zu klären. – Origin

+4

Ich kann sehen, wie dies für einen Neuankömmling verwirrend wäre, aber wie @Origin in seiner Antwort unten sagte und was dotjoe in seiner Antwort andeutete, ist die Funktion "Mapping by Code" relativ neu im Vergleich zum Projektalter. Für einen Neuling würde ich nur empfehlen, mit dem neuen "Mapping by Code" in NHibernate zu gehen.Ich selbst werde weiterhin bei Fluent NHibenate bleiben, weil ich viel Code habe, der es momentan benutzt und dessen Syntax mir persönlich mehr Sinn macht. –

Antwort

19

Fluent NH

Fluent NHibernate bietet eine Alternative zur Standard-XML-Mapping-Dateien des NHibernate. Anstatt XML-Dokumente zu schreiben, schreiben Sie die Zuordnungen in stark typisierten C# -Code. Dies ermöglicht eine einfache Refactoring, verbesserte Lesbarkeit und mehr prägnanten Code.

vs.

NH's new mapping by code

Es ist eine XML-Mapping-Lösung weniger integraler Bestandteil des NHibernate seit 3,2, bezogen auf Conform-Bibliothek sein. Seine API versucht, XML-Benennung und Struktur zu entsprechen. Es gibt eine starke Konvention in , wie die Mapping-Methoden erstellt werden. Seine Namen sind fast immer gleich zu XML-Elementnamen.

10

Einige davon ist Präferenz, einige davon ist die vorhandene Codebasis. Es gab eine Zeit, in der NHibernate keine eingebauten Nicht-XML-Zuordnungsoptionen hatte. Es gab ein paar Lösungen, um das zu beheben - z. confORM, Fluent NHibernate und andere, denen ich wahrscheinlich nicht bewusst bin.

Ab 3.2 Ich glaube (vielleicht 3,0) NHibernate hat jetzt "Mapping by Code". Der Vorteil gegenüber Fluent NHibernate ist, dass es keine zusätzliche Bibliothek benötigt und vom selben Team wie NHibernate unterstützt wird. Auf der anderen Seite ist Fluent NHibernate ein bisschen reifer (von dem, was ich gehört habe) und kann eine breitere Reihe von Mapping-Funktionen unterstützen.

Ich erwähnte auch "bestehende Codebasis". Wenn Sie ein Projekt haben, das Fluent NHibernate bereits zugeordnet ist, ist es am besten, wenn Sie damit fortfahren. Wenn Sie frisch beginnen, ist es vielleicht einen Versuch wert, das eingebaute "Mapping By Code" zu verwenden.