Por cierto SetMaxResults es la funcion para limitar la cantidad de
registros.

2012/3/1 Dario Quintana <[email protected]>

> Hola Giuliano
>
> Te paso algo que se hizo hace mucho tiempo para un ejemplo de cómo usar
> criteria.
>
> https://bitbucket.org/darioquintana/course/src/07d854d12783/uNHAddins.Examples.Course/EntitiesNHPersistence.Tests/Criteria/CriteriaFixture.cs
>
> https://bitbucket.org/darioquintana/course/src/07d854d12783/uNHAddins.Examples.Course/YourPrjDomain/Criteria/CustomerFinder.cs
>
> El CustomerFinder, tiene una manera ordenada de ir encadenando criterios,
> el test te muestra cómo utilizarlo. Al hacerlo de esa manera, es facil
> darle límites a la consulta de Criteria.
>
> Saludos
>
>
>
> 2012/3/1 Giulliano <[email protected]>
>
>> Estoy creando una consulta, que tendrá resultados diferentes en
>> función de los parámetros recibidos y si la situación se cumple, va a
>> crear un filtro y una cantidad fija de los resultados de esta
>> situación. El filtro está listo, pero no saben cómo establecer la
>> cantidad en estas situaciones. A continuación se muestra la consulta:
>>
>> public IEnumerable<ConeSlab> ConsultarPlacasAcompanhamento(String
>> codigoLaminador, Int16 placasAEnfornar, Boolean placasEnfornadas,
>> Int16 placasDesenfornadas, Boolean placasRejeitadas)
>> {
>>    try
>>    {
>>        var criteria = DetachedCriteria.For<ConeSlab>()
>>           .CreateAlias("Cone", "C")
>>           .CreateAlias("Slab.SlabPDO", "SP")
>>           .Add(Restrictions.Eq("C.Mill", codigoLaminador))
>>           .Add(Restrictions.IsNotNull("C.IdentBeginDtm"))
>>           .Add(Restrictions.IsNotNull("SP.IdentBeginDtm"));
>>
>>        var ordem = "SP.IdentBeginDtm";
>>
>>        Junction disjunction = Restrictions.Disjunction();
>>
>>        //Identificadas
>>        if (placasAEnfornar > 0)
>>        {
>>            ICriterion criterion = Restrictions.Conjunction()
>>                .Add(Restrictions.IsNotNull("SP.IdentEndDtm"))
>>                .Add(Restrictions.IsNull("SP.ChargeDtm"))
>>                .Add(Restrictions.IsNull("SP.RejectDtm"));
>>          **//How to set here?**
>>            disjunction.Add(criterion);
>>        }
>>
>>        //Enfornadas
>>        if (placasEnfornadas)
>>        {
>>            ICriterion criterion = Restrictions.Conjunction()
>>                .Add(Restrictions.IsNotNull("SP.ChargeDtm"))
>>                .Add(Restrictions.IsNull("SP.DischDtm"))
>>                .Add(Restrictions.IsNull("SP.RejectDtm"));
>>            disjunction.Add(criterion);
>>        }
>>
>>        //Desenfornadas
>>        if (placasDesenfornadas > 0)
>>        {
>>            ICriterion criterion = Restrictions.Conjunction()
>>                .Add(Restrictions.IsNotNull("SP.DischDtm"))
>>                .Add(Restrictions.IsNull("SP.MillDtm"))
>>                .Add(Restrictions.IsNull("SP.RejectDtm"));
>>            **//How to set here?**
>>            disjunction.Add(criterion);
>>       }
>>
>>        //Rejeitadas
>>        if (placasRejeitadas)
>>            criteria.Add(Restrictions.IsNull("SP.RejectDtm"));
>>
>>        criteria.Add(disjunction);
>>
>>        return coneSlabRepository.GetListCriteria(criteria, 300,
>> Order.Desc(ordem));
>>
>>    }
>>    catch (Exception ex)
>>    {
>>        Log.Error(AppStrings.EventNatureProgramacaoSequenciamento,
>> LibStrings.MessageExceptionQuery, ex);
>>        throw new LoggedException(ex.Message);
>>    }
>> }
>>
>>  Un ejemplo:
>>  Tengo que mostrar a tan sólo 10 registros y 20 registros
>> Desenfornadas identificados. Si la condición es también Enfornadas
>> para mostrar, la pantalla se ve así:
>>  - Todos los registros que satisfacen la condición de Enfornadas
>>  - Identificados 10 registros
>>  - 20 registros Desenformadas.
>>
>>  Por lo tanto, la cantidad no se puede establecer al final. Tendría
>> una manera de ajustar de forma individual?
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
>
>
> --
> Dario Quintana
>



-- 
Dario Quintana

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