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

Responder a