Gracias Diego por la respuesta, explico un poco más mi situación:

Estoy tratando de cargar el menú para un usuario que puede tener n
niveles, entonces tengo que jalar las opciones correspondientes a los
roles en los que se encuentra en usuario, estas son las clases:

public class Rol
    {
        public virtual int IdRol { get; set; }
        public virtual string Nombre { get; set; }
...
        // MANY TO MANY
        public virtual IList<OpcionMenu> ColOpcionMenu { get; set; }
    }

public class OpcionMenu
    {
        public virtual int IdOpcionMenu { get; set; }
        public virtual string Nombre { get; set; }
        public virtual int? IdPadre { get; set; }
...
        public virtual IList<OpcionMenu> ColOpcionMenuHijas { get;
set; }
        public virtual IList<Rol> ColRol { get; set; }
    }

Solo se pueden asociar las opciones con IdPadre = null a los roles.
Traté de hacerlo de esta forma:

ICriteria query = Sesion.CreateCriteria<OpcionMenu>()
    .CreateAlias("ColRol", "rol")
    .Add(Expression.In("rol.IdRol", idsRoles.ToArray()))
    .SetFetchMode("ColOpcionMenuHijas", FetchMode.Join)
    .SetResultTransformer(Transformers.DistinctRootEntity);

return query.List<OpcionMenu>();

Me trae las opciones correctamente pero solo me carga el siguiente
nivel de opciones. Hay alguna forma de hacerlo?

Gracias por la ayuda

-- 
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