Hola Jose, Lo que sería interesante ver es la secuencia de código que conduce al error, si es que pudiste aislarlo (quizas con un test-case).
Saludos 2011/5/29 Jose Fabricio Rojas <[email protected]> > En mi caso , estoy creando un nuevo maestro con sus nuevas lineas , tenia > entendido que lo que me comentas , ocurre al actualizar y/o eliminar un > objeto , es decir antes de actualizar/eliminar tenia que obtener el objeto y > actualizar/eliminar. > Para el manejo de la sesion , estoy usando session per request. > Para guardar hago o sgte: > > Medication medication = new Medication(); > medication.Id = Guid.New(); > medication.Sessions.Add(new Session(),new Session(),new Session()); > repository.Save(medication); > > > El 29 de mayo de 2011 15:42, Nestor Rodriguez <[email protected]>escribió: > > Este problema no es de mapeo. Nhibernate esta informando que en una sesion >> tienes dos instancias de un mismo tipo con el mismo Id. En la exception >> dice cual es el tipo de la instancia. Lo que debes hacer es identificar en >> tu flujo donde estas cometiendo este error. >> >> Esto suele ocurrir si por ejemplo tenemos la clase empleado y con la >> sesion A consultamos todos los empleados y con la sesion B nos traemos el >> empleado(1) y luego modificamos el empleado(1) y lo guardamos PERO con la >> sesion A. Si te das cuenta la sesion A ya tenia en cache al empleado(1) y >> ahora le dices que te guarde otra instancia del mismo empleado traido con la >> otra sesion y en el momento del Flush() sale el error. Espero te haya >> quedado claro. >> >> Saludos, >> Nestor Rodriguez >> >> >> 2011/5/29 Jose Fabricio Rojas <[email protected]> >> >>> Buenas, >>> Tengo un problema >>> tengo un maestro y un detalle , trato de guardar en el maestro y sus >>> detalles(Lineas) y me aparece en siguiente mensaje: >>> Exception: a different object with the same identifier value was >>> already associated with the session. >>> Para esto estoy usando Conform. y NH 3, anteriormente habia hecho algo >>> similar con mapping en xml, quizas este faltando algo en el mapping by >>> code de conform. >>> Aqui las entidades y el mapping >>> Maestro-> >>> mapper.Class<Medication>(cm => >>> { >>> cm.Id(o => o.Id, im => >>> im.Generator(Generators.Assigned)); >>> cm.ManyToOne( >>> x => x.Patient, >>> m => >>> { >>> m.Column("IdPatient"); >>> m.Fetch(FetchMode.Join); >>> m.NotNullable(true); >>> }); >>> cm.ManyToOne( >>> x => x.Service, >>> m => >>> { >>> m.Column("IdService"); >>> m.Fetch(FetchMode.Join); >>> m.NotNullable(true); >>> }); >>> cm.Bag( >>> o => o.Sessions, >>> x => >>> { >>> x.Key(k => k.Column("Id")); >>> x.Cascade(Cascade.All); >>> x.Table("Session"); >>> }, >>> x => >>> { >>> x.ManyToMany(k => k.Column("Id")); >>> x.ManyToMany(g => >>> g.Class(typeof(Session))); >>> }); >>> }); >>> Detalle-> >>> mapper.Class<Session>(cm => >>> { >>> cm.Id(o => o.Id, im => >>> im.Generator(Generators.Assigned)); >>> cm.ManyToOne( >>> x => x.Medication, >>> m => >>> { >>> m.Column("IdMedication"); >>> m.Fetch(FetchMode.Join); >>> m.Cascade(Cascade.Persist | Cascade.Remove); >>> }); >>> }); >>> Espero me puedan dar luces. >>> Gracias >>> >>> -- >>> 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 > -- Dario Quintana -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
