Uso NHibernate de manera intensiva durante algunos meses y lo encuentro muy poderoso, pero para mí este es el tipo de herramienta que a veces puede dañarlo. Tuve muchas situaciones en las que un cambio relativamente simple en el mapeo, en la consulta LINQ o en cualquier código que utilizara mis entidades condujo a comportamientos inesperados. Mi mayor "éxito espectacular" es tener la operación de lectura que N + 1 eliminó e inserta solo porque estaba ordenando mi colección de componentes en código en lugar de en la base de datos.Automatización de perfiles/pruebas unitarias de los comportamientos de NHibernate
Gracias a NHProf que pueden realizar un seguimiento de algunos de los problemas de este tipo, pero siento que no puedo estar seguro de que después de la refactorización o pequeño requisito cambia mi capa de acceso de datos todavía se comporta correctamente y de manera eficiente . Probarlo/perfilarlo manualmente después de cada cambio es de alguna manera doloroso. Lo que esperaré aquí es algún tipo de forma de prueba de unidad comportamiento de NHibernate bajo el capó, es decir, qué SQL se genera, cuántas consultas se realizan, cuántas entidades cargan, cuántas tablas se unieron, etc.
Sé que puede estar un poco fuera del objetivo principal de ORM, pero para aplicaciones que necesitan un buen rendimiento, ese conocimiento de bajo nivel me parece más importante que la abstracción.
¿Hay implementaciones similares a esta idea? ¿Cómo puedo automatizar el perfil mi aplicación NHibernate?