Tengo una aplicación de escritorio (winforms) que usa una base de datos Firebird como almacén de datos (en modo incrustado) y uso NHibernate para ORM. Una de las funciones que debemos respaldar es poder importar/exportar grupos de datos a/desde un archivo externo. Actualmente, este archivo externo también es una base de datos con el mismo esquema que la base de datos principal.Copiando entidades entre múltiples bases de datos con NHibernate
Ya tengo instalado NHibernate para ver varias bases de datos y puedo trabajar con dos bases de datos al mismo tiempo. El problema, sin embargo, es copiar datos entre las dos bases de datos. Tengo dos estrategias de copia: (1) copie con las mismas ID para los objetos [también conocido como importación/exportación] y (2) copie con la mayoría de las nuevas ID [también conocido como duplicado/copia]. Digo "principalmente nuevo" porque hay algunos elementos de búsqueda que siempre se copiarán con la misma ID.
Copiar todo con nuevos ID está bien, porque solo tendré un método "CopyForExport" que puede crear copias de todo y no asignar nuevos ID (o borrar todos los ID en el árbol de objetos).
¿Cuál es la forma de "mejores prácticas" para manejar esta situación y copiar datos entre bases de datos manteniendo los mismos ID?
Aclaración: No estoy tratando de sincronizar dos bases de datos, solo exportar un subconjunto (seleccionable por el usuario) o datos para transferir a otra persona (que luego importará el subconjunto de datos en su propia base de datos).
Más aclaración: Creo que he aislado el problema hasta aquí: Quiero utilizar la función ISession.SaveOrUpdate de NHibernate, así que configuré mis entidades con un generador de identidad que no está "asignado". Sin embargo, tengo un problema cuando quiero anular la identidad generada (para copiar datos entre múltiples bases de datos en el mismo proceso).
Hay una manera de utilizar un generador Guid.Comb o UUID, pero a veces puedo especificar mi propio identificador (para transferir a una conexión de base de datos diferente con el mismo esquema).
Finalmente encontré esta solución, estaba teniendo un problema similar. Supongo que no ayudó que el sitio de hibernación estuviera actualmente fuera de servicio. – LizB