2009-03-25 6 views
6

Acabo de empezar a aprender NHiberate. Parece bastante tedioso escribir archivos de configuración hbm.xml adecuados para cada tabla de base de datos.Usando NHibernate con Codesmith para generar ORM

La pregunta es: ¿NHibernate puede leer en tablas y recuperar automáticamente las relaciones y el archivo de configuración necesario, así como las clases de asignador de bases de datos por usted? Parece que el programador todavía tiene que hacer un montón de trabajo en el terreno inicialmente. Luego me encontré con Codesmith, que obtuvo plantillas para NHiberate. ¿Llena el vacío?

Respuesta

4

Puede utilizar plantillas de código, pero esto todavía crea un dolor en mi humilde opinión. La mejor manera es usar Fluent nHibernate. Tienen una nueva función auto mapeador, que usa la configuración por convención. No hay archivos de mapeo, solo hace suposiciones de que usted usa nombres similares y puede definir reglas de cómo convertir un nombre de entidad a un nombre de tabla.

1

La generación de código puede llenar esa brecha realmente bien, comencé a usar CodeSmith, pero luego hicieron un artículo de pago, así que me mudé al MyGeneration. Mi enfoque es atacar primero la base de datos, codificar gen los archivos de mapeo y las clases gen si no existen. Eso pone en marcha algo realmente rápido, ideal para un prototipo y la creación de datos de prueba.

Los archivos de mapeo, las clases y la base de datos a menudo se cambian a mano. En algunos casos, intenté hacer que la generación de código funcionara como parte de CI, pero se ha demostrado que es difícil hacerlo, a menos que sea disciplinado acerca de dónde se parte, se trata de cambios de código hechos a mano. Las clases parciales fueron una ayuda, pero aún así es un problema para que todo el equipo esté en sintonía, a nadie le gusta que su código sea sobreescrito por una herramienta, incluso si puede deshacer y fusionar.

+0

último proyecto que estaba en ese código utilizado gen'ed apaga el gen de la mitad de código cuando no pudimos mantener la actualización del generador lo suficientemente rápido .... En – JoshBerke

+0

Tu opinión, además de ser gratuita, ¿es MyGeneration un mejor código genérico? – devXen

+0

No tengo suficiente experiencia con CodeSmith u otros, me parece raro pero bueno. Ahora es de código abierto, y las plantillas están escritas en C#, todas esas son ventajas. – MrTelly

1

Trabajo para CodeSmith ... Tenga en cuenta que MyGeneration no se ha actualizado para siempre, lo que significa que también no tiene soporte. CodeSmith es totalmente compatible con sus productos y plantillas. Esto significa que cualquier error de plantilla también será corregido y verificado por Codesmith.

Gracias

-Blake Niemyjski

+0

Si bien acepto que MyGeneration no se ha actualizado en años, a los fines de la divulgación completa, vale la pena señalar que usted es un desarrollador activo de CodeSmith. – furtive

+0

Sí, esto es cierto. He actualizado la mayoría de mis publicaciones para indicar eso. –

Cuestiones relacionadas