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

Responder a