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

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