Example #1
0
        /// <summary>
        /// 获取数量
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="connection"></param>
        /// <param name="tableName"></param>
        /// <param name="whereExpress">条件表达式</param>
        /// <param name="outSqlAction">返回sql语句</param>
        /// <returns></returns>
        public static async Task <int> CountAsync <TEntity>(this
                                                            IDbConnection connection,
                                                            string tableName,
                                                            Expression <Func <TEntity, bool> > whereExpress,
                                                            Action <string> outSqlAction = null)
            where TEntity : class, new()
        {
            if (string.IsNullOrEmpty(tableName))
            {
                throw new ArgumentNullException(nameof(tableName));
            }

            var dbType        = connection.GetDbType();
            var sqlExpression = SqlExpression.Count <TEntity>(dbType, tableName: tableName).Where(whereExpress);
            var task          = await connection.QueryFirstOrDefaultAsync <int>(sqlExpression.Script, sqlExpression.DbParams);

            // 返回sql
            outSqlAction?.Invoke(sqlExpression.Script);
            return(task);
        }