Según la documentación NHibernate, las sentencias SQL se emiten en el orden siguiente cuando una sesión se vacía:fin Nhibernate de sentencias SQL al lavar sesión
- todas las inserciones de la entidad, en el mismo orden los objetos correspondientes se guardan utilizando ISession.Save()
- toda entidad actualiza
- todas las eliminaciones de recogida
- todos los elementos de recogida de eliminaciones, actualizaciones e inserciones
- todo insertio colección ns
- todas las eliminaciones de la entidad, en el mismo orden se suprimieron los objetos correspondientes usando ISession.Delete()
¿Por qué es obligado en este orden y ¿hay alguna manera de cambiarlo de manera que las sentencias se ejecutan en el mismo orden en que los doy?
Estoy intrigado por esto. ¿Por qué quieres un orden diferente? ¿Qué intentas lograr? – Rippo
Ok, sin entrar en demasiados detalles, tengo una tabla de muchos a muchos (con un pk compuesto) que intento eliminar primero y luego reinsertar cuando guardo el documento principal; He establecido inverse = true en la colección principal, así que tengo que administrar el almacenamiento yo mismo, pero debido a que las inserciones suceden antes de las eliminaciones, obtengo una violación de restricción si necesito volver a guardar una parte antigua de muchas en muchas. Solo he estado jugando con NH por un día más o menos, todavía estoy tratando de resolver los detalles. – LMC