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

<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

Responder a