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

Responder a