Buenisimo! muchas gracias por todo.

Abrazo,
Raul

Gustavo Ringel escribió:
> Lo podes bajar del trunk de uNHAddins tanto mi ejemplo, como los 
> ejemplos que Fabio menciona en su blog. uNHaddins esta hosteado en 
> google code. Mi ejemplo esta en el directorio examples.
> Lo de fabio creo que estan en el trunk pero en la parte del blog 
> Hunabku, en los articulos de Fabio podes seguir los links.
> Si algo no te queda claro pregunta en la lista de uNHAddins o mandame mail.
> 
> Abrazo.
> 
> Gustavo.
> 
> 2009/1/12 Raul Lopez <[email protected] <mailto:[email protected]>>
> 
> 
>     Gustavo, me interesa lo de uNHAddins. El ejemplo de sessionManagent
>     esta disponible?
>     Necesito entrar a prolijar esto cuanto antes. Si veo que lo puedo
>     aplicar ahora ok, y de lo contrario lo voy viendo para otro proyecto.
> 
>     Raul.
> 
>     Gustavo Ringel escribió:
>      > Bueno, ingresar rapido o no depende un poco de que tenes hasta
>     ahora. No
>      > siempre es facil cambiar de estrategia si el orden no se adapta a la
>      > logica de lo que tenes hecho. En el caso de conversation si lo que
>      > inyectas en los repositorios es el sessionfactory es muy facil (es la
>      > mejor manera de trabajar con multiples bases de datos de manera
>     ordenada
>      > esta)
>      >
>      > La gran sesion es un gran peligro. El acceso a las lineas lo hubieras
>      > obtenido si hubieras usado fetch join en el caso de HQL o eager
>     load en
>      > criteria o directamente lazy=false si para todos los casos de uso
>      > necesitas el elemento. Empezar a hacer roundtrips a la base con
>     lazy es
>      > peligroso, la idea es que si en un caso de uso lo necesitas usas una
>      > estrategia de fetch eager y si no lo necesitas no haces nada...
>      >
>      > Por ahi la magia de NH...
>      >
>      > En el ejemplo que tengo de sessionManagement en uNHAddins estoy
>     usando
>      > los objetos de dominio en el form, y mantengo una conversacion a
>     la que
>      > paso los objetos de un lado a otro hasta que se termina. En mi
>     caso en
>      > produccion en general trabajo con DTO's que implementan las
>     estrategias
>      > de binding de Winforms o WPF o lo que este usando y por tanto no uso
>      > todas las maravillas de NH durante el trabajo en el Form...esto tiene
>      > pros y contras.
>      >
>      > Mi estrategia de DTO fue tomada cuando no tenia forma de trabajar con
>      > conversacion, ahora estoy evaluando todavia si usare eso o
>     no...todavia
>      > soy mas tendiente a eso, porquen o me gusta que mis objetos de
>     dominio
>      > tengan que implementar cosas de Binding...pero en algunos proyectos
>      > puede ser util...
>      >
>      > Gustavo.
>      >
>      > 009/1/12 Raul Lopez <[email protected]
>     <mailto:[email protected]> <mailto:[email protected]
>     <mailto:[email protected]>>>
>      >
>      >
>      >     Gustavo, actualmente abro la sesion en el constructor del
>     presenter
>      >     y la paso como argumento cuando accedo al repositorio.
>      >     De esa forma tengo una "gran sesion". En principio tenía una
>     sesion
>      >     por acceso al repositorio, pero el problema era que al traer un
>      >     objeto factura p.ej, al cerrar la sesion a la vuelta del
>     repositorio
>      >     perdia el acceso a las lineas por el tema del lazy.
>      >     De todos modos esta estrategia me esta dando problemas, como
>     el de
>      >     los commits que mencionas.
>      >     Me interesa lo uNHAddins. Es algo que se pueda incorporar en una
>      >     forma relativamente rápida?
>      >
>      >     Saludos,
>      >     Raul.
>      >
>      >     Gustavo Ringel escribió:
>      >      > Raul, a la primer excepcion que te de la sesion tenes que
>     tirar
>      >     el form
>      >      > con esa estrategia.
>      >      > Si haces algo en un background worker no puede usar la
>     sesion que
>      >      > iniciaste en el constructor.
>      >      > Si haces algo en un timer no podes usar la sesion que
>     iniciaste en el
>      >      > constructor.
>      >      > Idem para threads.
>      >      >
>      >      > Es decir, no vas a estar contento rapidamente.
>      >      >
>      >      > Una solucion relativamente "rapida" es usar un presenter y
>     que el
>      >      > presenter sea el encargado de hacer opensession en cada
>     funcion
>      >     llama a
>      >      > los servicios/repositorios encargados de realizar un caso
>     de uso
>      >     y commitea.
>      >      >
>      >      > Obviamente el problema que tenes aca es que pasa si lo que
>     queres es
>      >      > abrir una orden agregar algunas lineas, etc, todo en la misma
>      >      > conversacion de manera que todo lo que hiciste se commitee
>     o solo
>      >     una parte.
>      >      >
>      >      > Es decir, en lo que dije antes si abris la orden commitea,
>     luego
>      >     creas
>      >      > algunass lineas se commitean, luego tenes algun
>     problema...y ups, no
>      >      > podes abortar, tenes que borrar a mano.
>      >      > En el patron de conversacion de uNHAddins con una estrategia
>      >     razonable
>      >      > para el id (no identity obviamente sino cualquier otra :))
>     podes
>      >     volver
>      >      > atras toda la conversacion...
>      >      >
>      >      > Saludos.
>      >      >
>      >      > Gustavo.
>      >      >
>      >      > 2009/1/12 Raul Lopez <[email protected]
>     <mailto:[email protected]>
>      >     <mailto:[email protected] <mailto:[email protected]>>
>     <mailto:[email protected] <mailto:[email protected]>
>      >     <mailto:[email protected] <mailto:[email protected]>>>>
>      >      >
>      >      >
>      >      >     Carlos, estoy usando algo asi donde _session es global
>     y aplico
>      >      >     NHibernateSessionFactory.OpenSession() en el constructor.
>      >      >     En principio funciona, ahora voy a ver que pasa cuando
>      >     traslade este
>      >      >     tema de parent-child a la aplicacion real.
>      >      >     Si se me complica aviso :)
>      >      >
>      >      >     Saludos,
>      >      >     Raul.
>      >      >
>      >      >
>      >      >     Carlos Peix escribió:
>      >      >      > 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]>
>      >     <mailto:[email protected]
>     <mailto:[email protected]>>
>      >      >     <mailto:[email protected]
>     <mailto:[email protected]>
>      >     <mailto:[email protected]
>     <mailto:[email protected]>>>
>      >      >      > [mailto:[email protected]
>     <mailto:[email protected]>
>      >     <mailto:[email protected]
>     <mailto:[email protected]>>
>      >      >     <mailto:[email protected]
>     <mailto:[email protected]>
>      >     <mailto:[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]
>     <mailto:[email protected]>
>      >     <mailto:[email protected]
>     <mailto:[email protected]>>
>      >      >     <mailto:[email protected]
>     <mailto:[email protected]>
>      >     <mailto:[email protected]
>     <mailto:[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