// QueryMultipleAsync End

        // CacheOrQueryMultipleAsync Start
        protected async Task <SqlMapper.GridReader> CacheOrQueryMultipleAsync(string key, string sql, object param = null, IDbTransaction transaction = null, int?commandTimeout = null, CommandType?commandType = null, int cacheTime = DefaultCacheTime)
        {
            return(await CacheProvider.GetWithRefreshAsync(key, async() => await QueryMultipleAsync(sql, param, transaction, commandTimeout, commandType), cacheTime));
        }
        // ExecuteScalarAsync End

        // CacheOrExecuteScalarAsync Start
        protected async Task <T> CacheOrExecuteScalarAsync <T>(string key, string sql, object param = null, IDbTransaction transaction = null, int?commandTimeout = null, CommandType?commandType = null, int cacheTime = DefaultCacheTime) where T : class
        {
            return(await CacheProvider.GetWithRefreshAsync(key, async() => await ExecuteScalarAsync <T>(sql, param, transaction, commandTimeout, commandType), cacheTime));
        }