This is code that generates the Criteria:

public static PagedList<E> Paginate<E>(this PaginationFor<E> pagination,
ICriteria criteria)
            where E : class, IEntity
        {
            if (criteria == null)
            { throw new ArgumentNullException("A criteria deve ser
passada!"); }

            //Limitar o numero de resultados
            SetMaxResults<E>(pagination, criteria);

            // adicionar os filtros, para limitar a pesquisa
            SetFilters<E>(pagination, criteria);

            // adicionar a ordenação, para os resultados
            AddOrders<E>(pagination, criteria);

            //obter a contagem de registros
            int count = GetCount(criteria);

            var list = criteria.List();

            // obter os resultados
            IList<E> entitiesList = list.Cast<E>().ToList();

            // caso existam, retirar a referencia a coleções supérfluas
            if (pagination.Filters.Length > 0)
            {
                entitiesList =
                    entitiesList.LoadWithout<E>(pagination.Filters);
            }
            // retornar a coleção pronta
            return new PagedList<E>(entitiesList, count);
        }

        public static void SetMaxResults<E>(PaginationFor<E> pagination,
ICriteria criteria)
            where E : class, IEntity
        {
            //caso for enviado o tamanho zero, significa que a query
            //deve retornar todos os registros, segundo os filtros
            if (pagination.PageSize == 0) { return; }

            criteria
                .SetMaxResults(pagination.PageSize)
                .SetFirstResult(pagination.PageIndex * pagination.PageSize);
        }

        public static void AddOrders<E>(PaginationFor<E> pagination,
ICriteria criteria)
            where E : class, IEntity
        {
            pagination.Orders.Foreach(
                co => {
                    criteria.AddOrder(
                        new Order(criteria.CreatePath(co), co.Value));
                });
        }

And to generates the filter of the criteria we are using a object as:

public class filter{
        public string property{get;set;}

        public object value{get;set;}

        public Operation operation {get;set;} being that Operation is a Enun
like the operations: Equals, NotEquals, Like...
}

All very very simple.

2010/4/14 Diego Mijelshon <[email protected]>

> Indeed
>
>    Diego
>
>
>
> On Wed, Apr 14, 2010 at 11:06, Richard Wilde <[email protected]>wrote:
>
>>  I suspect Diego wants to see the code (hql, linq etc) that you use to
>> generate the code, not the SQL itself...
>>
>>
>>
>> Many Thanks
>> Richard
>>
>>
>>
>> *From:* [email protected] [mailto:[email protected]] *On
>> Behalf Of *Diego Dias
>> *Sent:* 14 April 2010 14:55
>> *To:* [email protected]
>> *Subject:* Re: [nhusers] Mapping Nhibernate
>>
>>
>>
>> In previous messages, but here too:
>>
>>
>>
>>  SELECT  this_.IdMatricula as IdMatric1_122_14_,
>>      this_.IdTurma as IdTurma122_14_,
>>      this_.IdUsuario as IdUsuario122_14_,
>>      turma3_.IdTurma as IdTurma25_0_,
>>      turma3_.idTurmaStatus as idTurmaS2_25_0_,
>>      turma3_.IdCurso as IdCurso25_0_,
>>      curso4_.IdCurso as IdCurso31_1_,
>>      curso4_.idStatus as idStatus31_1_,
>>      curso4_.IdTipoCurso as IdTipoC10_31_1_,
>>      curso4_.IdOrganization as IdOrgan11_31_1_,
>>      statuscurs5_.idStatus as idStatus54_2_,
>>      statuscurs5_.strStatus as strStatus54_2_,
>>      tipocurso6_.strDescricao as strDescr2_125_3_,
>>      padraocomu7_.strNmPadrao as strNmPad2_103_4_,
>>      organizati8_.Id_Organization as Id1_87_5_,
>>      organizati8_.strTitle as strTitle87_5_,
>>      cursoprese9_.IdCurso as IdCurso6_6_,
>>      turmastatu10_.idTurmaStatus as idTurmaS1_91_7_,
>>      usuario1_.IdUsuario as IdUsuario116_10_,
>>      organizaca14_.idOrganizacao as idOrgani1_83_11_,
>>      cargo15_.idCargo as idCargo7_12_,
>>      matriculas16_.idMatriculaStatus as idMatric1_15_13_
>>       FROM tracking.matriculas this_
>>     inner join cursos.turmas turma3_ on
>> this_.IdTurma=turma3_.IdTurma
>>     left outer join schemadbo.cursos curso4_ on
>> turma3_.IdCurso=curso4_.IdCurso
>>     left outer join schemadbo.status statuscurs5_ on
>> curso4_.idStatus=statuscurs5_.idStatus
>>     left outer join schemadbo.tipos tipocurso6_ on
>> curso4_.IdTipoCurso=tipocurso6_.IdTipoCurso
>>     left outer join schemadbo.PadraoComunicacao padraocomu7_ on
>> curso4_.IdPadraoComunicacao=padraocomu7_.IdPadrao
>>     left outer join schemadbo.lms_cp_organizations organizati8_ on
>> curso4_.IdOrganization=organizati8_.Id_Organization
>>     left outer join schemadbo.CursosPresenciais cursoprese9_ on
>> curso4_.IdCurso=cursoprese9_.IdCurso
>>     left outer join schemadbo.turmasstatus turmastatu10_ on
>> turma3_.idTurmaStatus=turmastatu10_.idTurmaStatus
>>     left outer join schemadbo.turmaspresenciais turmaprese11_ on
>> turma3_.IdTurma=turmaprese11_.idTurma
>>     inner join schemadbo.matriculasresumo matricular12_ on
>> this_.IdMatricula=matricular12_.IdMatricula
>>     inner join schemadbo.usuarios usuario1_ on
>> this_.IdUsuario=usuario1_.IdUsuario
>>     left outer join schemadbo.Organizacoes organizaca14_ on
>> usuario1_.idOrganizacao=organizaca14_.idOrganizacao
>>     left outer join schemadbo.cargos cargo15_ on
>> usuario1_.idCargo=cargo15_.idCargo
>>     inner join schemadbo.matriculasstatus matriculas16_ on
>> this_.idMatriculaStatus=matriculas16_.idMatriculaStatus
>>      WHERE this_.IdTurma = @p0
>>
>> 2010/4/14 Diego Mijelshon <[email protected]>
>>
>> Where's the code that generates the query?
>>
>>    Diego
>>
>>   On Wed, Apr 14, 2010 at 10:49, Diego Dias <[email protected]> wrote:
>>
>>  Someone?
>>
>> 2010/4/13 Diego Dias <[email protected]>
>>
>>
>>
>> Hi, guys.
>>
>> I'm with a problem with the query that NHibernate generates. My
>> mapping is like bellow and I'm using ActiveRecord to do mapping:
>>
>>    public class Matricula
>>    {
>>           [BelongsTo("IdTurma", NotNull=True)]
>>           public Turma {get;set;}
>>    }
>>
>>    public class Turma
>>    {
>>          [BelongsTo("IdCurso", NotNull=True)]
>>          public Curso {get;set;}
>>    }
>>
>>    public class Curso
>>    {
>>           [PrimaryKey("IdCurso", Generator=PrimaryKeyType.Identity)]
>>           public int IdCurso{get;set;}
>>    }
>>
>> The problem is: The Nh generates the query with left where should be
>> inner. Between Matricula and Turma they makes inner, but between Turma
>> and Curso they makes left outer. What's problem? What's wrong?
>>
>> My query:
>>
>>    SELECT  this_.IdMatricula as IdMatric1_122_14_,
>>      this_.IdTurma as IdTurma122_14_,
>>      this_.IdUsuario as IdUsuario122_14_,
>>      turma3_.IdTurma as IdTurma25_0_,
>>      turma3_.idTurmaStatus as idTurmaS2_25_0_,
>>      turma3_.IdCurso as IdCurso25_0_,
>>      curso4_.IdCurso as IdCurso31_1_,
>>      curso4_.idStatus as idStatus31_1_,
>>      curso4_.IdTipoCurso as IdTipoC10_31_1_,
>>      curso4_.IdOrganization as IdOrgan11_31_1_,
>>      statuscurs5_.idStatus as idStatus54_2_,
>>      statuscurs5_.strStatus as strStatus54_2_,
>>      tipocurso6_.strDescricao as strDescr2_125_3_,
>>      padraocomu7_.strNmPadrao as strNmPad2_103_4_,
>>      organizati8_.Id_Organization as Id1_87_5_,
>>      organizati8_.strTitle as strTitle87_5_,
>>      cursoprese9_.IdCurso as IdCurso6_6_,
>>      turmastatu10_.idTurmaStatus as idTurmaS1_91_7_,
>>      usuario1_.IdUsuario as IdUsuario116_10_,
>>      organizaca14_.idOrganizacao as idOrgani1_83_11_,
>>      cargo15_.idCargo as idCargo7_12_,
>>      matriculas16_.idMatriculaStatus as idMatric1_15_13_
>>       FROM tracking.matriculas this_
>>     inner join cursos.turmas turma3_ on
>> this_.IdTurma=turma3_.IdTurma
>>     left outer join schemadbo.cursos curso4_ on
>> turma3_.IdCurso=curso4_.IdCurso
>>     left outer join schemadbo.status statuscurs5_ on
>> curso4_.idStatus=statuscurs5_.idStatus
>>     left outer join schemadbo.tipos tipocurso6_ on
>> curso4_.IdTipoCurso=tipocurso6_.IdTipoCurso
>>     left outer join schemadbo.PadraoComunicacao padraocomu7_ on
>> curso4_.IdPadraoComunicacao=padraocomu7_.IdPadrao
>>     left outer join schemadbo.lms_cp_organizations organizati8_ on
>> curso4_.IdOrganization=organizati8_.Id_Organization
>>     left outer join schemadbo.CursosPresenciais cursoprese9_ on
>> curso4_.IdCurso=cursoprese9_.IdCurso
>>     left outer join schemadbo.turmasstatus turmastatu10_ on
>> turma3_.idTurmaStatus=turmastatu10_.idTurmaStatus
>>     left outer join schemadbo.turmaspresenciais turmaprese11_ on
>> turma3_.IdTurma=turmaprese11_.idTurma
>>     inner join schemadbo.matriculasresumo matricular12_ on
>> this_.IdMatricula=matricular12_.IdMatricula
>>     inner join schemadbo.usuarios usuario1_ on
>> this_.IdUsuario=usuario1_.IdUsuario
>>     left outer join schemadbo.Organizacoes organizaca14_ on
>> usuario1_.idOrganizacao=organizaca14_.idOrganizacao
>>     left outer join schemadbo.cargos cargo15_ on
>> usuario1_.idCargo=cargo15_.idCargo
>>     inner join schemadbo.matriculasstatus matriculas16_ on
>> this_.idMatriculaStatus=matriculas16_.idMatriculaStatus
>>      WHERE this_.IdTurma = @p0
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to