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

Responder a