2011-02-25 13 views
5

Tengo que importar datos en mi base de datos usando nhibernate y mi modelo mapeado. Configuré un generador de guid.comb para identificadores. ¿Hay alguna manera de importar datos con identificadores asignados que deshabiliten el generador temporal de ID de guid.comb?NHibernate disable id generator para operación masiva

Respuesta

4

Puede cambiar temporalmente el generador de ID a asignado. Luego, una vez finalizada la importación, vuelva a cambiarla a COMB Guids. Solo asegúrese de llamar explícitamente a session.Save() en lugar de SaveOrUpdate(). ¿Eso resuelve tu problema?

+4

Si va a hacer importaciones masivas a menudo (en lugar de solo una operación de una sola vez), puede modificar el objeto de Configuración en la memoria para cambiar la identificación a Asignado antes de construir su SessionFactory. De esta forma, no es necesario mantener dos conjuntos de archivos hbm.xml. Discutí una técnica similar (para la actualización temporal de las tablas de búsqueda) en esta entrada del blog: http://jameskovacs.com/2007/11/04/testing-immutable-entities-with-nhibernate/ –

+0

Hola James muchas gracias, tu solución parece ser la solución. Solo una pregunta: ¿la deshabilitación del "generador de Id" podría hacerse para las entidades en cascada? muchas gracias. PD. ¿Cómo puedo configurar tu sugerencia como la respuesta real de mi pregunta? gracias – Hoghweed

+0

Filip esto podría ser una buena idea para cambiar la identificación, pero estaba preguntando cómo hacerlo, y para hacer operaciones masivas no se sugiere utilizar la sesión estándar, sino que es necesario utilizar la sesión sin estado para realizar operaciones masivas por muchas razones. Gracias de todos modos – Hoghweed