El error es bastante claro, la colección subcategorias se carga de forma
"lazy" estoy significa cuando accedes por primera vez.
El problema es que en el momento que estas intentando acceder ya cerraste
la sesión.

Existen muchas formas de manejar la sesión, y depende mucho del tipo de
aplicación que estés desarrollando. Nelo Pauselli dió dos conferencias
online sobre este tema:

http://altnethispano.org/wiki/van-2010-12-04-nhibernate-session.ashx
http://altnethispano.org/wiki/van-2011-02-12-nhibernate-session-ii.ashx



El 25 de octubre de 2012 08:54, Bernardo Budnik
<[email protected]>escribió:

> Buenas, tengo algunas inconvenientes con las sesiones y el lazy load en
> una aplicacion winForn en vs2012express, nHibernate 3.3 y SQLCompact
> Edition.
>
> Cree 2 clases sencillas, "Categoria" y "SubCategoria", Categoria tiene una
> lista de SubCategorias, cuando busco una instancia de Categoria, trae sin
> problemas, pero cuando quiero acceder a la lista de SubCategorias de la
> instancia me da el siguiente error: "*Información adicional:
> Initializing[MiniVentasClass.Entities.Categoria#1]-failed to lazily
> initialize a collection of role:
> MiniVentasClass.Entities.Categoria.Subcategorias, no session or session was
> closed*"
>
> *Definición de Clases:*
>
>     public class Categoria
>     {
>         public virtual Single Id {get;set;}
>         public virtual string Descripcion { get; set; }
>         public virtual IList<SubCategoria> Subcategorias { get; set; }
>     }
>
>     public class SubCategoria
>     {
>         public virtual Single Id { get; set; }
>         public virtual Categoria Categoria { get; set; }
>         public virtual string Descripcion { get; set; }
>     }
>
> *Así manejo la sesión:*
>
>     public class nHibernateManager
>     {
>         private static ISessionFactory _sessionFactory;
>
>         private static ISessionFactory SessionFactory
>         {
>             get
>             {
>                 if(_sessionFactory == null)
>                 {
>                     var configuration = new Configuration();
>                     configuration.Configure("Config.xml");
>                     configuration.AddAssembly("MiniVentasClass");
>
>                     _sessionFactory = configuration.BuildSessionFactory();
>                 }
>
>                 return _sessionFactory;
>             }
>         }
>
>         public static ISession OpenSession()
>         {
>             return SessionFactory.OpenSession();
>         }
>     }
>
> *El mapeo:*
>
> *Categoria*
>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>                    assembly="MiniVentasClass"
>                    namespace="MiniVentasClass.Entities"
>                    default-lazy="true">
>   <class name="Categoria">
>     <id name="Id" type="int" unsaved-value="0" generator="native"/>
>     <property name="Descripcion" type="string" length="30"/>
>     <bag name="Subcategorias">
>       <key column="IdCategoria"/>
>       <one-to-many class="SubCategoria"/>
>     </bag>
>   </class>
> </hibernate-mapping>
>
> *SubCategoria*
>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>                    assembly="MiniVentasClass"
>                    namespace="MiniVentasClass.Entities"
>                    default-lazy="true">
>   <class name="SubCategoria">
>     <id name="Id" type="int" unsaved-value="0" generator="native"/>
>     <many-to-one name="Categoria" class="Categoria" column="IdCategoria"/>
>     <property name="Descripcion" type="string" length="30"/>
>   </class>
> </hibernate-mapping>
>
> Les agradecería me den una mano, hace poco empece con nHibernate y no se
> como solucionarlo.
>
> --
> 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