¿NHibernate o Fluiber NHibernate?
orm fluent-nhibernate (5)
Me interesaría escuchar opiniones de otras personas sobre si elegirían (no ''neithers'' por favor;) y por qué.
¿Cuáles son los inconvenientes de usar con fluidez? (¿dependencia de versión tal vez?) Pros, Contras, Experiencias, etc.
Definitivamente diría ir con fluidez-nhibernate. Solo ten en cuenta que no necesariamente es un viaje tan fácil como esperas.
En cuanto a la dependencia de la versión
- Tuve un problema de dependencia "inversa" cuando actualizar a una nueva versión de FNH requería que actualizara a una nueva versión de NH (creo que de 2.0 a 2.1). Este no fue un problema importante para mí.
- Recientemente (esta mañana) eliminé NH 2.1.1 en FNH 1.0 RTM (esto se distribuye con 2.1.0) sin dramas (todavía).
Editar: Desde que escribí esta publicación, FNH ha madurado sustancialmente hasta el punto en que no creo que esto sea un problema real.
Apoyo de mapeo: algunas asignaciones aún no son posibles con un nhibernate fluido.Sin embargo, esta NO es una razón para evitar FNH ya que las asignaciones híbridas fluent-xml le permiten recurrir al xml tradicional en caso de que no pueda mapearlo con fluidez (aunque esto solo se aplica a la granularidad por clase).Ejemplos de mapeos:-
Todavía no se pueden asignar los campos: http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/a7787927dafd23a/84ce2616946a18d7 -
No se pueden mapear algunas veces del diccionario http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/d38b6c72250cd2fb - en realidad, de lo que deduzco que esta funcionalidad existe, pero todavía no está en la línea principal.
-
Factor de complejidad compuesto A partir de los sonidos, aprenderá tanto FNH como NH al mismo tiempo. Para la mayoría de las aplicaciones bastante simples, esto está bien; de hecho, FNH es a menudo tan bueno que necesitas saber bastante poco sobre las asignaciones de hbm.xml. Pero si quiere hacer algo razonablemente complejo, rara vez funcionará la primera vez y se preguntará si se trata de un problema de PEBKAC, fluido o NH. Con más frecuencia de lo que esperaba, terminé escribiendo las asignaciones de xml tradicionales (por supuesto, usted está haciendo esto de todos modos, pero hubiera sido preferible no gastar más esfuerzo de lo necesario jugando primero con fluidez).
Fluent N-Hibernate es realmente una buena envoltura sobre NHibernate. Para administrar el mapeo en Fluent es mucho mejor que el mapeo xml. El desarrollo se hace más rápido a medida que avanzas a Fluent ...
Es mejor si usa Entity Developer para crear una entidad y un esquema de base de datos.
Fluido NHIbernate se sienta encima de NHibernate, por lo que no es realmente una elección entre los dos. Si vas a utilizar NHibernate, ELIJA usar Fluent NH encima para ahorrar grandes cantidades de esfuerzo.
Fluidez NHibernate es impresionante, no usaría NHibernate sin él. Puedes mapear con fluidez todas tus entidades (brindándote chequeo en tiempo de compilación y soporte automatizado de prueba) en lugar de tener que mantener engorrosos archivos xml y recordar su sintaxis / DTD.
También puede mapear automáticamente sus entidades en función de las convenciones predeterminadas y / o propias.
¡Solo úsalo!
La ventaja de utilizar Fluent NHibernate junto con NHibernate es que obtiene errores de tiempo de compilación si ha estropeado su mapeo, en lugar de errores de tiempo de ejecución. También obtiene una experiencia mucho mejor cuando refactoriza su código, ya que sus asignaciones se mantienen actualizadas a medida que cambia el nombre de las propiedades o lo que sea, en lugar de tener que acordarse de modificar manualmente sus archivos XML de mapeo.
El mayor inconveniente de Fluent NHibernate es que todavía se encuentra en una fase bastante temprana de su desarrollo, y existe un riesgo bastante grande de romper los cambios a medida que avanza el desarrollo del marco.
Personalmente, realmente no he conseguido mucho en nhibernate fluido ya que me siento cómodo con los archivos de mapeo. El uso de Visual Studio para crear los archivos de mapeo es muy simple y puede establecer el esquema para el archivo xml que le da intellisense en el archivo de mapeo. Estoy de acuerdo en que tener la verificación de la sintaxis en tiempo de compilación es una ventaja para usar fluent-nhibernate, pero me cuesta justificar el aprendizaje de la API fluida cuando ya estoy familiarizado con el mapeo XML. Tal vez debería superar mi lethergy y aprenderlo ya ... :-)