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
