Пример #1
0
        public async override Task <Tuple <int, IList <TEntity> > > GetListAsync(IQueryObject <TEntity> query)
        {
            var parameters = new DynamicParameters();
            var select     = ExpressionHelper.Select <TEntity>();
            var count      = ExpressionHelper.Count <TEntity>();

            foreach (var where in query.QueryExpression)
            {
                select.Where(where);
            }
            foreach (var where in query.QueryExpression)
            {
                count.Where(where);
            }
            select.Where(x => x.IsDeleted == false);
            count.Where(x => x.IsDeleted == false);
            if (query.OrderSort == SortOrder.ASC)
            {
                select.OrderBy(query.OrderField);
            }
            else if (query.OrderSort == SortOrder.DESC)
            {
                select.OrderByDesc(query.OrderField);
            }
            else
            {
                select.OrderByDesc(x => x.CreationTime);
            }
            if (query.Count >= 0)
            {
                select.Limit(query.Skip, query.Count);
            }

            foreach (KeyValuePair <string, object> item in select.DbParams)
            {
                parameters.Add(item.Key, item.Value);
            }

            using (Connection)
            {
                var customerRepresentativeList = await ReadConnection.QueryAsync <TEntity>(select.Sql, parameters);

                int totalCount = await ReadConnection.QuerySingleAsync <int>(count.Sql, parameters);

                return(new Tuple <int, IList <TEntity> >(totalCount, customerRepresentativeList.ToList()));
            }
        }
        /// <summary>
        /// 根据查询条件查询总数
        /// </summary>
        /// <param name="query">查询对象</param>
        /// <returns></returns>
        public override async Task <int> CountAsync(IQueryObject <TEntity> query)
        {
            var parameters = new DynamicParameters();
            var count      = ExpressionHelper.Count <TEntity>();

            foreach (var where in query.QueryExpression)
            {
                count.Where(where);
            }

            foreach (KeyValuePair <string, object> item in count.DbParams)
            {
                parameters.Add(item.Key, item.Value);
            }

            using (ReadConnection)
            {
                var Count = await ReadConnection.QuerySingleAsync <int>(count.Sql, parameters);

                return(Count);
            }
        }
Пример #3
0
        public override async Task <Tuple <int, IList <GoodsInfo> > > GetListAsync(IQueryObject <GoodsInfo> query)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("select g.*, u.* from goodsinfo g LEFT JOIN userinfo u ON g.UserId=u.Id WHERE 1=1 and g.IsDelete=0 ");
            StringBuilder sbCount = new StringBuilder();

            sbCount.Append("select COUNT(g.Id) from goodsinfo g LEFT JOIN userinfo u ON g.UserId=u.Id WHERE 1=1 and g.IsDelete=0 ");
            var queryandsort = query.QuerySql.FirstOrDefault();

            if (query.QuerySql.Count > 0)
            {
                sb.Append(queryandsort.Key);
                sbCount.Append(queryandsort.Key);
            }
            if (query.Count <= 0)
            {
                query.Count = int.MaxValue;
            }
            sb.Append(" LIMIT " + query.Skip + "," + query.Count);
            using (ReadConnection)
            {
                var GoodsList = await ReadConnection.QueryAsync <GoodsInfo, UserInfo, GoodsInfo>(sb.ToString(), (goodsinfo, usersinfo) =>
                {
                    if (goodsinfo != null)
                    {
                        goodsinfo.UserInfo = usersinfo;
                    }
                    return(goodsinfo);
                }, queryandsort.Value);

                int totalCount = await ReadConnection.QuerySingleAsync <int>(sbCount.ToString(), queryandsort.Value);

                return(new Tuple <int, IList <GoodsInfo> >(totalCount, GoodsList.ToList()));
            }
        }