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