Sencillo en la colección pon lazy=false y listo.  El problema es que por
defecto tu colección es lazy y en el momento que la necesitas tu ya
cerraste la sesión.

Saludos
Néstor Rodríguez

Sent from my iPhone

On 25/10/2012, at 7:12, Bernardo Budnik <[email protected]> wrote:

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