2011-03-06 19 views
11

En mi sesión nhibenate I Mapeo de objetos con AutoMapper y en la acción afterMap creo nueva instancia del objeto porque extraigo el objeto de la base de datos para comparar las propiedades. Entonces, AutoMapper crea dos instancias de un objeto con la misma ID. Cuando intento comprometer la sesión, recibo el error de que tengo que oponerme con la misma identificación.Desconectar objeto de la sesión de NHibernate

Así que quiero desconectar el objeto que extraigo después de comparar las propiedades. Después de eso puedo confirmar la sesión

¿Cómo hago eso?

Gracias!

Respuesta

13

Puede usar session.Evict(persistentObject) para expulsar un objeto persistente de la sesión. Esto eliminará el objeto de la memoria caché de primer nivel, lo que le permitirá vaciar la sesión.

+0

¿Es posible eliminarlo de todas las sesiones? – Joel

+0

A menos que haga algo realmente funky, sus objetos estarán conectados como máximo a una sesión: la que lo hidrató – mookid8000

+0

Realmente me gustaría que fuera cierto. Tengo un código heredado que hace cosas más divertidas, así que me encontré con esta excepción, y esperaba que hubiera alguna solución provisional, pero bueno ... – Joel

Cuestiones relacionadas