Как создавать запросы для разных количеств? - PullRequest
3 голосов
/ 01 марта 2012

Я создаю запрос, который будет иметь различные результаты в зависимости от полученных параметров, и, если возникнет ситуация, создаст фильтр и определенное количество результатов для этой ситуации.Фильтр готов, но не знаю, как установить сумму в этих ситуациях.Ниже приведен запрос:

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);
    }
}

Как настроить индивидуальные возвраты?

1 Ответ

3 голосов
/ 01 марта 2012

Определите ваш SetMaxResult в Int в соответствии с ситуацией и установите его в Критерии перед извлечением.

   int maxResults = 300;  // Default value.
   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"));

    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"));
        disjunction.Add(criterion);
        maxResults = 10; 
    }

    //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); 
        maxResults = 20;
    }

    //Desenfornadas
    if (placasDesenfornadas > 0)
    {
        ICriterion criterion = Restrictions.Conjunction()
            .Add(Restrictions.IsNotNull("SP.DischDtm"))
            .Add(Restrictions.IsNull("SP.MillDtm"))
            .Add(Restrictions.IsNull("SP.RejectDtm"));
        disjunction.Add(criterion); 
        maxResults = 50; 
   }

    criteria.Add(disjunction);
    criteria.SetMaxResults(maxResults);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...