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

Responder a