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

Responder a