Me respondo a mi mismo. pues la asignación de objeto Medication no la hacia completa es decir en lugar de hacer medication.Pacient = pacient , estaba haciendo esto: medication.Pacient.Id = .... es decir solo estaba llenando la propiedad. y no llenaba la referencia al objeto completo. Gracias.
El 29 de mayo de 2011 20:14, Dario Quintana <[email protected]>escribió: > 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 > -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
