Este es un patron q podrias utilizar para manejar la session en un
aplicacion de escritorio

http://fabiomaulo.blogspot.com/2008/12/conversation-per-business-transaction.html

Por otro lado puedes empezar observando el codigo de esta aplicacion

http://fabiomaulo.blogspot.com/2009/09/nhibernate-in-winform-coupled.html

Para que tengas una idea nada mas, ya que para hacer algo utilizando
las mejores best practices, tienes esto

http://jfromaniello.blogspot.com/2009/08/introducing-nhiberate-and-wpf.html,
sigue por favor leyendo mas sobre este desarrollo en el mismo blog

y la van respectiva aqui
http://altnet-hispano.pbworks.com/altnetcafe-2008-08-29 y aqui
http://altnet-hispano.pbworks.com/vanhispano-2009-09-12

Por otro lado, los temas expuestos en los link que te adjunto,
demandan conocimientos de AOP, ID, IoC, en fin muchas cosas que
vendran por si solas segun avances en tu investigacion

Saludos

Edgar



El día 28 de junio de 2010 11:11, Carlos Cocom
<[email protected]> escribió:
> Hola Edgar la idea es utilizarlo en un aplicación de escritorio.
> Diego la idea general la tome
> de aquí http://docs.google.com/Doc?docid=0AUP-rKyyUMKhZGczejdxeHZfMTVjMnBqYjVnNw&hl=en
> Sobre utilizar una contexto tipo sesión por conversación no sabia. Voy a
> investigar sobre el tema, gracias por tip. Y no te rías de mi código :D
>
> un saludo
>
> El 28 de junio de 2010 10:38, Edgar Ramos <[email protected]> escribió:
>>
>> Y para que tipo de aplicacion usas este codigo, escritorio, web ?
>>
>> El día 28 de junio de 2010 10:30, Diego Mijelshon
>> <[email protected]> escribió:
>> > Tenés un problema fundamental en tu implementación, y es que el scope de
>> > la
>> > session no se corresponde con el uso.
>> > La solución que elegiste (indicarle al repositorio desde una capa
>> > superior
>> > que debe hacer un load explicito) no hace más que complicarlo.
>> > Deberías utilizar un contexto de sesión más apropiado, en el cual la
>> > misma
>> > esté "viva" durante toda la conversación.
>> >
>> >    Diego
>> >
>> >
>> > 2010/6/28 Carlos Cocom <[email protected]>
>> >>
>> >> Un saludo gente del foro
>> >> Trabajando con asociaciones me surgió un duda y es que tengo
>> >> dos entidades
>> >> Equipo y la de Nota.
>> >> En mi repository den Equipo tengo en el metodo GetById
>> >>        public Equipo GetById(Int32? id)
>> >>         {
>> >>             using (var session = GetSession())
>> >>             {
>> >>                 var equipo = session.Get<Equipo>(id);
>> >>                 return equipo;
>> >>             }
>> >>         }
>> >> la forma en que lo utilizo es
>> >> public static void RecuperarEquipo()
>> >>         {
>> >>             var aRep = new EquipoRepository();
>> >>             var equipo = aRep.GetById(6);
>> >>             equipo .Descripcion = "Ya cambie2";
>> >>             if (equipo.Notas.Count == 0)
>> >>             {
>> >>                 System.Console.WriteLine("Sin Notas");
>> >>             }
>> >>             equipo.Save(thard);
>> >>         }
>> >> Al recuperar equipo es necesario que yo le agregue que inialize
>> >> mi colección de notas ya que si no devuelve el error de que
>> >> Initializing[MyHardware.Model.Entities.Equipo#6]-failed to lazily
>> >> initialize a collection of role:
>> >> MyHardware.Model.Entities.Equipo.Notas, no
>> >> session or session was closed
>> >> Una primera idea para resolver este comportamiento fue agregarle al
>> >> metodo
>> >> get una dictionary switch para indicarle si debe o no cargar
>> >> cierta asociación
>> >>         public Equipo GetById(Int32? id, Dictionary<string, bool>
>> >> swLoadLazy)
>> >>         {
>> >>             using (var session = GetSession())
>> >>             {
>> >>                 var thar = session.Get<Equipo>(id);
>> >>                 if ( swLoadLazy != null )
>> >>                 {
>> >>                    if (swLoadLazy["colNotas"] == true)
>> >>                    {
>> >>                        NHibernateUtil.Initialize(thar.Notas);
>> >>                    }
>> >>                    return thar;
>> >>                 }
>> >>             }
>> >>         }
>> >> ahora al recuperar la entidad hago lo siguiente
>> >>         public static void RecuperarEquipo()
>> >>         {
>> >>             var aRep = new EquipoRepository();
>> >>             var diccionario = new Dictionary<String, Boolean>
>> >> {{"colNotas", true}};
>> >>             var thard = aRep.GetById(6, diccionario);
>> >>             thard.Descripcion = "Ya cambie2";
>> >>             if (thard.Notas.Count == 0)
>> >>             {
>> >>                 System.Console.WriteLine("Sin Notas");
>> >>             }
>> >>             aRep.Save(thard);
>> >>         }
>> >>
>> >> Mi pregunta en su experiencia como debería manejar la interacciones con
>> >> coleccion de entidades?
>> >> Nota:
>> >> Se que puedo ponerle en el mapping lazy = "false" pero me parece que
>> >> este
>> >> comportamiento es fundamental para el performance.
>> >>
>> >> Hasta pronto. Si puedan dejen una comentario
>> >>
>> >> --
>> >> 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
>>
>> --
>> 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

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