public List <T> List(OrderEntity[] orders, ListFilterEntity filterCriterias) { List <T> resultList = new List <T>(); try { if (Session == null || !Session.IsOpen) { Session = NHibernateManager.Instance.GetSession(); } ICriteria criteria = Session.CreateCriteria(typeof(T)); addCriterias(ref criteria, filterCriterias); addOrder(ref criteria, orders); criteria.List(resultList); } finally { NHibernateManager.Instance.CloseSession(); } return(resultList); }
private void addCriterias(ref ICriteria criteria, ListFilterEntity filterEntities) { if (filterEntities != null && filterEntities.Count > 0) { if (!filterEntities.HasOperation) { ICriterion criterion; for (int i = 0; i < filterEntities.Count; i++) { criterion = criterionEntity(filterEntities[i]); criteria.Add(criterion); } } else { ICriterion leftCriterion, rightCriterion; for (int i = 1; i < filterEntities.Count - 1; i += 2) { leftCriterion = criterionEntity(filterEntities[i - 1]); rightCriterion = criterionEntity(filterEntities[i + 1]); switch (filterEntities[i].FilterOperation) { case FilterOperation.And: criteria.Add(Expression.And(leftCriterion, rightCriterion)); break; case FilterOperation.Or: criteria.Add(Expression.Or(leftCriterion, rightCriterion)); break; default: throw new OrderOperationInvalidException(); } } } } }
/// <summary> /// O mesmo que List(), incluindo um array do tipo NHibernate.Expression.Order para ordenação da lista. /// </summary> /// <param name="orders">Array com instâncias de Order.</param> /// <returns></returns> public virtual IList List(OrderEntity[] orders, ListFilterEntity filterEntities) { return(ListEntityManager <T> .Instance.List(orders, filterEntities)); }