Estas devolviendo una lista de objetos con propiedades no inicializadas, a
una api superior y estas cerrando la sesión antes de que esas propiedades
sean inicializadas. Como bien dijo Fabio antes, la sesión no se pierde, VOS
la cerraste en el dispose. Para lo cual podrías

   1. en tu "capa de negocio" devolver cosas totalmente inicializadas.
      2. Usar un scope de sesion diferente ;).. En este caso te recomiendo
      leer todos los posts de Fabio sobre Conversation per Business
Transaction, y
      los ejemplos mio y de Gustavo que estan en unhaddins, con sus respectivos
      post. (sobre el mio podes googlear "Chinook Media Manager")

Cada una tiene sus pros y contras, mas alla de que utilices 1, me parece que
tenes un mal manejo de sesión.
La opción 1 es mucho más interesante cuando hay separación Fisica.

PD: Lo que llamas Repositorio no aplica el patrón repositorio, más bien
parece una forma de encapsular la ISession. Aclaro esto por las dudas
alguien lea Repositorio y lo asocie con lo que en el día a día llamamos
repositorio.


El 23 de junio de 2010 11:53, Eddie <[email protected]> escribió:

> Metodo en mi capa de negocio
> public IList ObtenerCliente (int id)
> {
>    using (Repository repo = new Repository())
>    {
>                repo.beginTransaction();
>                Cliente cli = (Cliente)repo.Get(typeOf(Cliente), id);
>                IList<Cliente> lista = new List<Cliente>();
>                lista.Add(cli);
>                repo.commitTransaction();
>    }
>
>        return (IList) lista;
> }
>
> en mi WinForm solo asigno el IList a la grilla
>
> private void CargarCliente()
> {
>        Negocio neg = new Negocio();
>        grilla.DataSource = neg.ObtenerCliente(txtId.Text);
> }
>
>
> El constructor del Repository me abre la session. Y en el Dispose se
> cierra la session.
> Mi idea es que el winForm no tenga q abrir ni cerrar sessiones x la
> division en capas q queremos hacer.
> El problema es que la session se cierra en el Dispose?
> O como tendria que hacer para devolver el objeto con sus datos y ya
> independiente de la session?
>
> Gracias.
>
>
>
> On 22 jun, 16:22, Fabio Maulo <[email protected]> wrote:
> > se perdió.... no es que la session vaga sola por un bosque y no encuentra
> > mas el camino...
> > sola la session no se pierde...
> http://fabiomaulo.blogspot.com/2008/12/conversation-per-business-tran...
> >
> > 2010/6/22 Eddie <[email protected]>
> >
> >
> >
> >
> >
> > > Hola,
> >
> > > Tengo un problema con un datagrid al enlazarlo a un IList o a un
> > > IList<T>.
> > > Utilizando Spring.Net nunca tuve problema y ahora me surge este error
> > > utilizando NHibernate solamente.
> >
> > > Error:
> > > System.Reflection.TargetInvocationException: El descriptor de acceso a
> > > la propiedad 'Apellido' inicio la excepcion.
> > > 'Initializing[Dominio.Persona] - could not initialize proxy - no
> > > Session'
> >
> > > La grilla tiene varios campos. Carga la primer columna bien Id y con
> > > la segunda columna ya sale el error.
> > > Se perdio la session por alguna razon?
> > > Alguien sabe que puede ser?
> >
> > > Muchas gracias de antemano.
> >
> > > --
> > > 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

Responder a