2009-04-27 8 views
8

Solo quiero hacer una encuesta rápida para ver si Fluent Nhibernate es bien recibido o si tiene muchos problemas. Me gusta Nhibernate pero definitivamente veo el problema con xml para hacer el mapeo.Según su experiencia, ¿cuántos de ustedes recomendarían NHibernate con fluidez sobre la forma de hacer las cosas de Nhibernate para mi nuevo proyecto?

Por lo tanto, estoy deseando que los miembros de la comunidad me ayuden a elegir una sobre la otra.

No estoy considerando ya sea linq2sql o entidad de marco en este momento.

Respuesta

11

Me gusta Fluent NHibernate y creo que es lo suficientemente maduro si va a comenzar un nuevo proyecto. Usarlo en un nuevo proyecto debería permitir que el proyecto Fluent NHibernate continúe madurando a medida que avanza el tuyo. Existe la posibilidad de romper los cambios (como sucedió recientemente con las asignaciones de convenciones), pero debería ser capaz de lidiar con ellos. He tenido algunos problemas con las asignaciones, pero el proyecto es bastante sensible a los informes de errores y ha funcionado en gran medida como se esperaba.

Las opciones de asignación son: asignaciones

  • XML - Estándar de NHibernate. Los dolores de cabeza de mantenimiento son bien conocidos, pero la ventaja es que tiene acceso a todas las opciones de configuración proporcionadas por NHibernate. Hay algunas opciones de configuración menos utilizadas que se siguen agregando a Fluent (al menos la última vez que presté atención). Por lo tanto, si está anticipando algunas asignaciones locas, es posible que desee considerar esta opción.

  • Asignación estándar: Provisto por Fluent. Puede crear las asignaciones mediante el código y es mucho mejor para la refactorización y la creación. No hay mucho que decir al respecto, en mi experiencia, aparte de que funciona bien y es una gran mejora en la opción xml.

  • Auto Mapping - Provisto por Fluent. Le permite mapear propiedades de objetos por convención e intenta crear las asignaciones automáticamente. Es una buena idea, pero creo que todavía tiene algo de madurez por hacer. Actualmente estoy usando este método de mapeo y funciona bien, pero he terminado escribiendo una gran cantidad de convenciones y especificando las relaciones entre objetos que no parece haber ahorrado mucho esfuerzo de las asignaciones estándar.

Fluido NHibernate también proporciona buenos ayudantes de prueba para probar sus asignaciones y algunas API de configuración que puede hacer que sea más fácil de configurar NHibernate. En general, es un buen proyecto y proporciona una buena funcionalidad adicional a NHibernate.


edición:

Una cosa adicional a tener en cuenta: Si usted comienza con Fluido NHibernate y decide que no va a trabajar para su escenario, puede migrar fácilmente de nuevo a los mapeos XML. Fluidez NHibernate le permite exportar las asignaciones que crea y puede usar esas exportaciones para no perder el trabajo de mapeo que ya haya realizado.

5

Una de las mejores ventajas de utilizar Fluido Nhibernate sobre NH vainilla es buena prueba de integración con PersistenceSpecification <T>:

[Test] 
public void TestProductSave() 
    { 
    new PersistenceSpecification<Product>() 
     .CheckProperty(x => x.ProductName, "Wax") 
     .CheckProperty(x => x.Price, 20) 
     .VerifyTheMappings(); 
    } 
1

He estado usando fluidez en un nuevo proyecto de la mina. El único golpe menor que he golpeado hasta ahora es que no funciona tan bien con Castle Windsor, pero fue bastante fácil extender Windsor para hacer el trabajo. Aparte de eso, me ha encantado. Es mucho más conciso que las asignaciones de XML.

Lo bueno de hablar con fluidez es que no se trata de una inversión de todo o nada. Puede escribir la mayoría de sus asignaciones con fluidez y, si encuentra algún problema, puede asignar esas clases en el mapeo XML estándar hasta que se resuelvan los problemas.

0

Estoy usando FNH para un nuevo proyecto. Lo que más me gusta es la capacidad de generar y construir la base de datos directamente desde las clases de entidad.

He tenido que escribir algunas convenciones para las propiedades, pero prefiero que mantenga más de una lista para cada clase.

1

Como cualquier buena respuesta, depende.

No obtuve tanto rendimiento de las funciones de automatización como hubiera deseado. A menudo tengo que trabajar con bases de datos preexistentes.

Ya tenía varios proyectos usando NHibernate en mi haber, por lo que usar el mapeo hbm no fue difícil. Después de descubrir cómo incluir en el esquema hbm, fue mucho más fácil.

La única ventaja real que obtuve de tener fluent-nhibernate es poder refactorizar mis clases de dominio y hacer que mis asignaciones cambien automáticamente. Realmente no noté mucho aumento de velocidad al escribir las asignaciones.

Como cualquier cosa, YMMV.

+0

+1 para la ventaja de refactorización, especialmente en combinación con la automatización. Puedo ver cómo anular las convenciones predeterminadas todavía puede requerir algo de tiempo, pero al menos puedo refactorizar y volver a generar los archivos hbm, minimizando el ajuste manual/personalización en el nivel XML. –

Cuestiones relacionadas