Hola Raul,

Normalmente no uso winforms pero por ahí este patron podria funcionarte:

using ( ITransaction tx = _session.BeginTransaction() )
{
        // Aquí haces todas tus actualizaciones

        tx.Commit();
}

Donde _seesion es la variable de instancia del form, ahí tenes la sesion
abierta y tenes un scope bien limitado para la transaccion.

En cuanto a esto:
> - Estas agregando LA MISMA INSTANCIA de chuild a todos los parents, me 
> parece que eso no es lo que queres hacer.
a los efectos de la prueba me parecio que no era relevante, pero...

[Carlos] Creo que es muy relevante porque en el Child tenes una referencia
al parent, lo cual invalida que un child pueda pertenecer a varios parents.
Incluso diria que este es el motico por el cual te quedaba un child asociado
a un solo parent (el ultimo), supondiendo que estuvieras haciendo la
referencia al parent, cosa que no se ve en tu codigo.


Suerte

Carlos Peix 

-----Mensaje original-----
De: [email protected]
[mailto:[email protected]] En nombre de Raul Lopez
Enviado el: Lunes, 12 de Enero de 2009 11:44 a.m.
Para: [email protected]
Asunto: [NHibernate-Hispano] Re: ayuda con coleccion


Hola Carlos, en efecto habia varias cosas mal (lo copie correctamente al
mail). Probe con tu codigo y funciona.
Te comento conclusiones entre lineas:

Carlos Peix escribió:
> Hola Raul,
> 
> Hay varias cosas en tu ejemplo que no estan bien, no se si porque lo 
> copiaste incorrectamente al mail o porque estan definitivamente mal. 
> Te pido que reescribas tu codigo de esta manera (y que cambies lo que 
> corresponda siempre y cuando entiendas los motivos). Estos son los 
> puntos que no me cierran
> 
> - No queda claro el scope de la variable _session.
es global para todo el form

> - Estas agregando LA MISMA INSTANCIA de chuild a todos los parents, me 
> parece que eso no es lo que queres hacer.
a los efectos de la prueba me parecio que no era relevante, pero...

> - Veo una propiedad Parent en el child que no estas seteando en el 
> codigo que enviaste.
fue omision, no lo vi

> - Estas haciendo un update con cada parent, esto no seria necesaro, 
> incluso no es necesario hacer ninguno con la opcion de cascade que tenes.
de acuerdo, esta de mas

> // Aca achicas mucho mas el scope de session, el metodo // 
> CreateSession() depende de cómo manejes e sessionFactory // pero 
> deberia ser una sesion nueva puesto que estas haciendo // el Dispose 
> al salir del using(), esa sesion no servira para // nada mas.

aca no hay problema, pero en el programa real se me complica si no hago la
sesion global (tengo lio con el lazy) Voy a estudiar mas sobre el tema del
manejo de las sesiones.

Muchas gracias una vez mas.

Saludos,
Raul.

 



--~--~---------~--~----~------------~-------~--~----~
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