Nuestro equipo solía utilizar NetTiers y lo encontró útil. PERO ... cuanto más lo usamos, más encontramos dolores de cabeza y dolor con él. Por ejemplo, cada vez que realice un cambio en la base de datos, es necesario volver a generar el DAL con CodeSmith que implicó:
- re-generación de miles de líneas de código en 3 proyectos separados
- re-generación de cientos de procedimientos almacenados
Quizás haya otras maneras de hacerlo, pero esto es lo que teníamos que hacer. La regeneración del código fuente estaba bien, daba miedo, pero está bien. El problema real vino con los procedimientos almacenados. No eliminó ningún procedimiento almacenado no utilizado, de modo que si eliminó una tabla de su esquema y generó su DAL, los procedimientos almacenados para esa tabla no se eliminaron.Además, esto se convirtió en un gran dolor de cabeza para las secuencias de comandos de cambio de base de datos donde tuvimos que comparar la estructura de la base de datos anterior a la nueva y crear un script de cambio para actualizar las instalaciones del cliente. Esta secuencia de comandos podría ejecutar en las decenas de miles de líneas de código sql y si había un problema para ejecutarlo, que invariablemente era, fue un gran problema para resolverlo.
Luego se encendió la luz, NHibernate como ORM. Ciertamente tiene un tiempo de aceleración pero vale la pena. Hay un montón de soporte para él, así que si hay algo que necesita hacer, más que probable que se haya hecho antes. Es extremadamente flexible y le permite controlar cada aspecto de la misma y algo más. También es cada vez más fácil de usar. Fluent Nhibernate es una gran forma de deshacerse de los archivos de mapeo xml que se necesitan y NHibernate Profiler proporciona una excelente interfaz para ver lo que ocurre detrás de las escenas para aumentar la eficiencia y eliminar la redundancia.
Pasar de NetTiers a NHibernate ha sido doloroso, pero en el buen sentido. Nos ha obligado a avanzar hacia una mejor arquitectura y reevaluar las necesidades funcionales. NetTiers proporcionó toneladas de código de acceso a datos, obtenía esta entidad por su id, obtenía esta otra entidad por su clave externa, obtenía una tlist y una lista vlist de esto y aquello, pero la mayor parte era innecesaria y no utilizada. NHibernate con un repositorio genérico y repositorios personalizados solo donde fuera necesario redujo toneladas de código no utilizado y realmente mejor legibilidad y confiabilidad.
¿Cómo le dijo su experiencia que 'las acciones reales en la base de datos son más lentas?' Debe incluir una descripción de las pruebas de rendimiento que realizó para que la gente sepa que no se está inventando. – liammclennan