Bernardo, A simple vista no es un error de mapping sino que seguramente una vez que levantas la Categoría estás cerrando la sesión y retornando el objeto para mostrarlo en la UI, entonces cuando dsd la UI intentas acceder a alguna SubCategoría es que da el error. Para que el lazy funcione la sesión se debe mantener abierta.
GF 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 -- { me: 'Gustavo Fuentes', mobile: '+54 9 11 69674021' } -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
