/// <summary> /// Gets the entity list from respersitory. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="expressions">The criterion expressions,for example:new ICriterion[]{Restriction.Eq("AField","xy")}.</param> /// <param name="orders">The orders.</param> /// <returns></returns> public IList <T> GetList <T>(Hib.Criterion.ICriterion[] expressions, string associatePath, string alias, params Hib.Criterion.Order[] orders) { try { OpenConnect(); Hib.ICriteria criteria = _Session.CreateCriteria(typeof(T)); criteria.CreateAlias(associatePath, alias); if (expressions != null) { foreach (Hib.Criterion.ICriterion exp in expressions) { criteria.Add(exp); } } foreach (Hib.Criterion.Order o in orders) { criteria.AddOrder(o); } return(criteria.List <T>()); } catch (Exception ex) { LogExepttion(ex); throw; } finally { Disconnect(); } }
/// <summary> /// Gets the entity list from respersitory. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="expressions">The criterion expressions,for example:new ICriterion[]{Restriction.Eq("AField","xy")}.</param> /// <param name="orders">The orders.</param> /// <returns></returns> public IList <T> GetList <T>(Hib.Criterion.ICriterion expression, params Hib.Criterion.Order[] orders) { try { OpenConnect(); Hib.ICriteria criteria = _Session.CreateCriteria(typeof(T)); if (expression != null) { criteria.Add(expression); } foreach (Hib.Criterion.Order o in orders) { criteria.AddOrder(o); } return(criteria.List <T>()); } catch (Exception ex) { LogExepttion(ex); throw; } finally { Disconnect(); } }
/// <summary> /// 根据查询条件创建Criteria /// </summary> /// <param name="session"></param> /// <param name="searchExpression"></param> /// <param name="searchOrders"></param> /// <param name="hasCollection"></param> /// <returns></returns> public static NHibernate.ICriteria CreateCriteria(NHibernate.ISession session, ISearchExpression searchExpression, IList <ISearchOrder> searchOrders, ref bool hasCollection) { hasCollection = false; int paramCnt = 0; NHibernate.ICriteria criteria = session.CreateCriteria(typeof(T), "Current"); Dictionary <string, ICriteria> aliases = new Dictionary <string, ICriteria>(); aliases.Add("Current", criteria); NHibernate.Criterion.ICriterion criterion = GetCriterion(session.SessionFactory, ref criteria, aliases, searchExpression, ref hasCollection, ref paramCnt); if (criterion != null) { criteria.Add(criterion); } if (paramCnt > 2100) { throw new NotSupportedException("您输入的参数过多,系统最多只支持2100个参数!"); } if (searchOrders != null) { foreach (ISearchOrder so in searchOrders) { criteria.AddOrder(GetOrder(ref criteria, aliases, so)); } } return(aliases["Current"]); }
/// <summary> /// Gets the distict list. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="distictPropertys">The distict propertys.</param> /// <param name="expressions">The expressions.</param> /// <param name="orders">The orders.</param> /// <returns></returns> public IList <object[]> GetDistinctList <T>(string[] distictPropertys, Hib.Criterion.ICriterion[] expressions, params Hib.Criterion.Order[] orders) { try { OpenConnect(); Hib.ICriteria criteria = _Session.CreateCriteria(typeof(T)); if (distictPropertys != null) { ProjectionList projects = Projections.ProjectionList(); foreach (string p in distictPropertys) { projects.Add(Projections.Property(p)); } criteria.SetProjection(Projections.Distinct(projects)); } else { throw new Exception("the disctinct property can't be null."); } if (expressions != null) { foreach (Hib.Criterion.ICriterion exp in expressions) { criteria.Add(exp); } } foreach (Hib.Criterion.Order o in orders) { criteria.AddOrder(o); } return(criteria.List <object[]>()); } catch (Exception ex) { LogExepttion(ex); throw; } finally { Disconnect(); } }
public IList <SystemUser> GetByRestrictions(IDictionary <string, string> restrictions, string orderBy, bool ascending, int?limit) { using (ISession session = NHibernateHelper.OpenSession()) { NHibernate. ICriteria criteria = session.CreateCriteria <SystemUser>(); foreach (KeyValuePair <string, string> pair in restrictions) { criteria = criteria.Add(Restrictions.Eq(pair.Key, pair.Value)); } if (limit != null) { criteria = criteria.SetMaxResults((int)limit); } if (orderBy != null) { criteria = criteria.AddOrder(new Order(orderBy, ascending)); } return(criteria.List <SystemUser>()); } }