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