Durante mi aprendizaje, he utilizado NHibernate para algunos proyectos más pequeños que en su mayoría codifiqué y diseñé por mi cuenta. Ahora, antes de comenzar un proyecto más grande, surgió la discusión sobre cómo diseñar el acceso a los datos y si usar o no una capa ORM. Como todavía estoy en mi aprendizaje y todavía me considero un principiante en programación empresarial, realmente no intenté presionar en mi opinión, que es que usar un mapeador relacional de objetos en la base de datos puede facilitar bastante el desarrollo. Los otros programadores del equipo de desarrollo tienen mucha más experiencia que yo, así que creo que haré lo que me digan. :-)
Sin embargo, no entiendo completamente dos de las principales razones para no usar NHibernate o un proyecto similar:
- Uno puede simplemente construir sus propios objetos de acceso a datos con consultas SQL y copiar esas consultas fuera de Microsoft SQL Server Management Studio.
- Depurar un ORM puede resultar complicado.
Entonces, por supuesto, podría simplemente construir mi capa de acceso a datos con muchos SELECT
s, etc., pero aquí pierdo la ventaja de las uniones automáticas, las clases de proxy de carga diferida y un menor esfuerzo de mantenimiento si una tabla obtiene una nueva columna o una columna obtiene renombrado. (Actualización de numerosos SELECT
, INSERT
y UPDATE
consultas frente a la actualización de la configuración de mapeo y posiblemente refactorización las clases de negocios y dtos.)
Además, al usar NHibernate puede encontrarse con problemas imprevistos si no conoce muy bien el marco. Eso podría ser, por ejemplo, confiar en Table.hbm.xml donde establece la longitud de una cadena para que se valide automáticamente. Sin embargo, también puedo imaginar errores similares en una capa de acceso a datos basada en consultas SqlConnection "simple".
Finalmente, ¿son esos argumentos mencionados anteriormente realmente una buena razón para no utilizar un ORM para una aplicación empresarial basada en bases de datos no trivial? ¿Hay probablemente otros argumentos que ellos / yo podría haber pasado por alto?
(Probablemente debería agregar que creo que esta es como la primera aplicación "grande" basada en .NET / C # que requerirá trabajo en equipo. Las buenas prácticas, que se consideran bastante normales en Stack Overflow, como las pruebas unitarias o la integración continua, no -existente aquí hasta ahora.)