Cordiales Saludos,

Soy nuevo en Nhibernate y puede ser que lo que pregunte sea más
sencillo de lo que creo.
Tengo una tabla recursiva para almacenar unos menus que pueden tener
hijos y los hijos su vez más hijos.
Cuando traigo los menus padres quiero que traiga los hijos y asi
sucvesivamente. (Esto lo hago bien y me funciona) pero cuando intento
colocar filtros o criterios solamente me afectan a los menus padres y
no afecta los BAG o conjuntos de hijos.
Eh intentado crear alias para filtrar los hijos pero no obtengo los
resultados que quiero.
Si alguien me puede ayudar, le agradecería mucho. Dejo el códido, el
mapeo y la clase.

Para mi es importante que las restricciones se efectuen como en
cascada (si se puede aplicar)  porque solamente debería tyrae los
menus padres Activos y sus hijos Activos, pero lo que realmente hace
es traer los padres activos pero los hijos activos e inactivos y esto
aplica para otros criterios.

Gracias

Este es mi Codigo:

Dim listaMenu As IList(Of SegMenu)
Dim miCriterio As NHibernate.ICriteria
miCriterio = SesionDb.Session.CreateCriteria(Of SegMenu)()

With miCriterio
  .Add(Restrictions.Eq("Estado", "Activo"))
  .Add(Restrictions.Eq("TipoMenu", "Horizontal"))
  .Add(Restrictions.IsNull("MenIdPadre"))
  .AddOrder(Order.Asc("Orden"))
End With

listaMenu = miCriterio.List(Of SegMenu)()

Mi Mapeo:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="WcfSuifp" namespace="WcfSuifp.Suifp.Persistencia.Seguridad">
  <class name="SegMenu" lazy="false">
    <id name="MenId" column="MenId" type ="decimal" unsaved-value="0">
      <generator class="identity"/>
    </id>
    <property name="MenIdPadre" type="decimal" not-null="false" />
        ...
    <bag name="SubMenu" table="SegMenu" inverse="true" lazy ="false" >
      <key column="MenIdPadre" />
      <one-to-many class="SegMenu" not-found="ignore" />
    </bag>

  </class>
</hibernate-mapping>
y mi clase
Namespace Suifp.Persistencia.Seguridad
    <DataContract()> _
    Public Class SegMenu
#Region "Declaraciones"

        Private menIdValor As Nullable(Of Decimal)
        Private menIdPadreValor As Nullable(Of Decimal)
        ...
        Private subMenuValor As IList(Of SegMenu)

#End Region
#Region "Propiedades"
        <DataMember()> _
        Public Property MenId() As Nullable(Of Decimal)
            Get
                Return menIdValor
            End Get
            Set(ByVal value As Nullable(Of Decimal))
                menIdValor = value
            End Set
        End Property
        <DataMember()> _
        Public Property MenIdPadre() As Nullable(Of Decimal)
            Get
                Return menIdPadreValor
            End Get
            Set(ByVal value As Nullable(Of Decimal))
                menIdPadreValor = value
            End Set
        End Property
        '''
        <DataMember()> _
        Public Property SubMenu() As IList(Of SegMenu)
            Get
                Return subMenuValor
            End Get
            Set(ByVal value As IList(Of SegMenu))
                subMenuValor = value
            End Set
        End Property

#End Region


Nuevamente Gracias

D.R.

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