he visto muchas implementaciones en la web de las personas que manejan sus sesiones y transacciones de NHibernate en una HttpModule.NHibernate sesión y gestión de transacciones en HttpModule
El HttpModule:
- crea una sesión al inicio de la solicitud
- envuelve toda la solicitud en una transacción
- confirma la transacción al final de la solicitud
Si las personas usan esta estrategia, ¿cómo manejan la siguiente situación:
- petición llega
- recuperar el objeto de base de datos
- actualización objeto
- objeto no supera la validación
- cambios en el objeto todavía se conservan debido a que la transacción se confirma en el HttpModule.
Parece que no hay una buena manera de deshacer la transacción en el escenario anterior. El único plan que puedo llegar a es:
- escribir mi validación de tal manera que está garantizado para tener éxito antes de actualizar mi objeto de dominio (me toma de la validación de mi modelo de dominio).
- Administrar mi transacción más cerca de mi lógica de negocio y descartar la idea de hacerlo de forma transparente en un HttpModule. (He visto bastantes publicaciones recomendar esto)
Dado que muchas personas parecen estar utilizando el enfoque HttpModule, espero que haya una tercera forma de manejar este escenario que no he pensado ?
También me viene a la misma pregunta últimamente. Comienzo con NHibernate en algún proyecto. Mi enfoque final es usar Autofac para IOC y usar HttpRequestScope para sesiones. Y todas las operaciones de transacción en el nivel de repositorio de negocios. Tal vez no sea el mejor, pero funciona bien por ahora ... – Elph
Validar los cambios en lugar de validar los cambios aplicados a la entidad es mucho más fácil. – Paco
¿Encontró una respuesta a esto? – Rippo