A ver, la solucion definitivamente tiene que ser la 1ra, pues estamos trabajando con el objetivo de sacar toda la logica de negocio de la BD, lo que no entiendo es como enfocas la 1ra opcion, pues lo que hago es presisamente eso, hagos las reasignaciones primero, luego eliminos las relaciones que no se reasignan sino que dejan de exisistir(oreonomb y lugarnac) y por ultimo elimino la persona en cuestion, esto es lo ultimo que hago pues de lo contrario me da el error de referencia pues no puedo borrar a una persona cuando todavia hay clases que le hacen referencia, a que te refieres con lo de borrar en cascada???
El 17/11/11, [email protected] <[email protected]> escribió: > Hola Banzai, > > se me ocurren dos ideas: > 1. Si esto es algo frecuente, creo que lo pensaría "como un proceso > que agregue o combine en p2 los datos de p1 y luego borre p1 en > cascada". Sería una solución mas orientada a objetos. > > 2. Si es algo que pasó y ahora tenés mecanismos de controles para que > no vuelva a pasar, lo haría con un script en la db. Sería una solución > mas orientada a datos. > > saludos. > nelo > > > 2011/11/17 Banzai <[email protected]>: >> Disculpen que no haya respondido antes, pero no estaba viniendo a la >> oficina, >> mira el problema es el siguiente: Remontense a las clases que puse al >> principio >> La situacion problemica es que yo puedo llegar a tener dos personas >> insertadas en el sistema p1 y p2, y en un momento determinado me >> percato que los dos son la misma persona, entonces deseo pasar todas >> las solicitudes,direcciones, fotos, lugar de nacimiento que eran de la >> p1 a la p2. para ello hago el siguiente algoritmo >> >> en OtroNombre hay dos objetos persona (p1cuyo id es 49 y p2 cuyo id >> es 65) mas un campo que explica porque estaban como si fueran >> diferentes >> >> ITransaction transaction = MainClass.m_session.BeginTransaction(); >> >> - metodo que reasigna la foto de p1 a p2 >> >> - metodo que reasigna direccion de p1 a p2 >> >> - metodo que reasigna solicitud de p1 a p2 >> >> - metodo que elimina LugarNac de p1 >> >> - metodo que elimina OtroNomb donde esta p1 y p2 >> >> - metodo que elimina Persona p1 >> >> transaction.Commit(); >> >> ninguno de estos metodos hace commit adentro solo salvan en la sesion >> de NHibernate, estos son los ejemplos: >> reasignar : MainClass.m_session.Merge(direccion); >> eliminar: MainClass.m_session.Delete(lugarnac); >> >> todos los metodos funcionan menos el ultimo que elimina la persona el >> cual me da el siguiente error: >> a different object with the same identifier value was already >> associated with the session: 49, of entity: Proyecto.Persona >> >> Alguien sabe que significa este mensaje???? >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
