Пример #1
0
 /// <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();
     }
 }
Пример #2
0
        /// <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();
            }
        }
Пример #3
0
        /// <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"]);
        }
Пример #4
0
 /// <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>());
            }
        }