26

Provengo da un framework Entity e da uno sfondo LLBL per i miei strumenti ORM.Differenza tra FluentNHibernate e NHibernate "Mapping by Code"

Mi è stato chiesto di creare un nuovo sistema basato su NHibernate. Non l'ho mai fatto, quindi lo sto arrivando con occhi nuovi.

Qual è la differenza tra la mappatura con Fluent NHibernate e "Mapping By Code" in NHibernate? C'è una preferenza?

+2

Questo non è troppo costruttivo, credo. Perché non impari l'NH e vedi tu stesso quali sono le differenze? ** A proposito, sto imparando java e ho uno sfondo in C#, quali sono le differenze? ... ** – gdoron

+2

Credo che si riferisca specificamente alla mappatura. +1 per compensare il downvote e modificato la domanda per essere più chiara. – Origin

+4

Riesco a vedere come questo potrebbe confondere un nuovo arrivato, ma come @Origin ha affermato nella sua risposta di seguito e ciò che dotjoe ha accennato nella sua risposta, la funzione "Mapping by Code" è relativamente nuova rispetto all'età del progetto. Per un principiante, consiglierei di andare con il nuovo "Mapping by Code" integrato in NHibernate.Io stesso continuerò a stare con Fluent NHibenate perché ho un sacco di codice che attualmente lo usa e la sua sintassi ha più senso per me personalmente. –

risposta

19

Fluent NH

Fluent NHibernate offre un'alternativa al file di mapping XML serie di NHibernate. Piuttosto che scrivere documenti XML, si scrivono i mapping nel codice C# fortemente tipizzato. Ciò consente un facile refactoring, una migliore leggibilità e un codice più conciso.

vs.

NH's new mapping by code

Si tratta di una soluzione di mapping XML-meno essere parte integrante di NHibernate dal 3.2, sulla base di Conform biblioteca. La sua API prova a conforme alla denominazione e alla struttura XML. C'è una forte convenzione in come vengono costruiti i metodi di mappatura. I suoi nomi sono quasi sempre uguali ai nomi di elementi XML.

10

Alcuni di essi sono di preferenza, alcuni dei quali sono il codice esistente. C'è stato un tempo in cui NHibernate non aveva opzioni di mapping non XML integrate. C'erano alcune soluzioni là fuori per risolvere questo problema, ad es. conform, fluente NHibernate e altri probabilmente non ne sono a conoscenza.

A partire da 3,2 credo (forse 3.0) NHibernate ora ha "Mapping by Code". Il vantaggio di questo Fluent NHibernate è che non richiede una libreria aggiuntiva ed è supportato dalla stessa squadra di NHibernate. D'altra parte, Fluent NHibernate è un po 'più maturo (da quello che ho sentito) e può supportare un set più ampio di funzioni di mappatura.

Ho anche menzionato "codice esistente". Ovviamente, se hai un progetto già mappato con Fluent NHibernate, sarebbe meglio continuare con esso. Se stai per iniziare, forse vale la pena provare a usare il "Mapping By Code" incorporato

Problemi correlati