Hola Erika El problema tal vez sea de un poco de óptica en como trabaja NHibernate
Mira cuando recuperas una entidad y estas trabajando dentro un contexto donde la session esta disponible (y tienes configurado tu entidad lazy = true) Al hacer algo como persona.empleados.count te devuelve 0 si no tiene ningún u el numero de entidades en la colección esto lo hace transparente por que trabaja sobre demanda o sea al necesitar saber cuando objetos hay en la colección empleado el framework automáticamente va hacia el repo (luego a donde este persistido) y las trae para hacer la operación que tu requieres Por otro lado si recuperas la entidad y al siguiente paso no estas en el contexto de la session entonces te tira el error que nos indicas El 27 de septiembre de 2010 13:30, Fabio Maulo <[email protected]>escribió: > Erika, > Si yo lograra entender lo que estas leyendo solo con > IList listaPersonas = q.List(); > me dedicaría a otro laburo y seguro tendría un fangote de guita. > > Para que entiendas, cuando necesitas ayuda: > 1) si tenes una exception tenes que pasar el texto completo del mensaje y > no una parte de el. > 2) si la exception tiene inner-exception tenes que pasar ambos mensages > completo > 3) si hablas de Empleados y Personas no envies lineas de codigo que no > muestran nada de lo que estas hablando > 4) si alguien te dice que es probable (en mi caso no dije probable porque > estoy seguro) que tenes un problema con el manejo de la session, trata de > explicar como estas manejando la session. > > > > 2010/9/27 Erika Fernández <[email protected]> > > FAbio: No estoy cerrando session, apenas recupero las personas, me >> fijo en sus empleados. En esta línea: >> >> IList listaPersonas = q.List(); >> >> José: Necesito buscar un empleado por nro de documento, el tema es que >> el empleado no tiene un nro de documento, pero si la persona (que es >> la clase que contiene todos los datos personales de los empleados) Una >> persona puede tener 1 a muchos empleados (con sus fechas de baja, en >> realidad tiene 1 solo valido). Al consultar la clase Personas, >> necesito sus intancias de empleados, pero como te digo, algunas >> personas no son empleados y no tienen ninguna instancia de empleados. >> Entoces mi duda seria como recupero los empleados de esa persona. >> >> Gracias nuevamente >> >> On 27 sep, 15:08, Fabio Maulo <[email protected]> wrote: >> > El problemas que tenes es otro. >> > Estas cerrando la session. >> > >> > 2010/9/27 Erika Fernández <[email protected]> >> > >> > >> > >> > >> > >> > > Mi problema es que al recuperar una persona, si tiene, necesito los >> > > empleados, pero como no puedo configurar lazy=false porque en algunos >> > > casos no tiene empleados y me salta la excepcion "could not initialize >> > > a collection", no se como cargar dinamicamente los empleados cuando >> > > existan. >> > >> > > Muchas gracias por la ayuda! >> > >> > > On 27 sep, 14:30, José F. Romaniello <[email protected]> wrote: >> > > > El 27 de septiembre de 2010 14:20, Erika Fernández >> > > > <[email protected]>escribió: >> > >> > > > > Necesito levantar dinamicamente una coleccion. >> > > > > Es asi.... tengo objetos personas los cuales tiene un bag de >> > > > > empleados (0 a muchos empleados). >> > > > > Como muchas personas no tienen en realidad ningun empleados, no >> puedo >> > > > > configurar lazy=false en el bag de empleados en el xml de >> personas. >> > >> > > > Hay como 3 cosas diferentes : >> > >> > > > - lazy=false/true es para que la colección de empleados, se >> cargue >> > > > inmediatamente cuando cargas el objeto Persona... Lo cual para el >> 98% >> > > de los >> > > > casos es innecesario, y practicamente todos usamos el valor por >> > > defecto >> > > > lazy="true"... que es lo mismo que no poner nada. >> > > > - El hecho de que una persona tenga 0 empleados y no puedas poner >> > > > lazy="false", tampoco tiene mucho que ver.. salvo que tengas una >> > > combinación >> > > > de lazy="false" + fetch="join" (no recomendable). >> > > > - Con los valores por defecto todo debería funcionar bien, cual >> es el >> > > > problema que tenes? >> > >> > > > > ¿Como puedo hacerlo? Por lo que estuve leyendo hay 3 librerias >> > > > > distintas para hacer esto. Yo tengo como referencia en mi proyecto >> > > > > LinFu. >> > >> > > > No tiene nada que ver. Vamos a decir que nhibernate necesita generar >> > > proxies >> > > > para *many-to-one,* que son lazy. PAra el tema de las collections >> > > nhibernate >> > > > no utiliza proxies dinámicos. Osea que en este caso no te preocupes >> por >> > > > esto. >> > >> > > -- >> > > Para escribir al Grupo, hágalo a esta dirección: >> > > [email protected] >> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano >> > >> > -- >> > Fabio Maulo- Ocultar texto de la cita - >> > >> > - Mostrar texto de la cita - >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> > > > > -- > Fabio Maulo > > -- > 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
