// QueryMultiple End

        // CacheOrQueryMultiple Start
        protected SqlMapper.GridReader CacheOrQueryMultiple(string key, string sql, object param = null, IDbTransaction transaction = null, int?commandTimeout = null, CommandType?commandType = null, int cacheTime = DefaultCacheTime)
        {
            return(CacheProvider.GetWithRefresh(key, () => QueryMultiple(sql, param, transaction, commandTimeout, commandType), cacheTime));
        }
        // Query End

        // CacheOrQuery Start
        protected IEnumerable <T> CacheOrQuery <T>(string key, string sql, object param = null, IDbTransaction transaction = null, bool buffered = true, int?commandTimeout = null, CommandType?commandType = null, int cacheTime = DefaultCacheTime) where T : class
        {
            return(CacheProvider.GetWithRefresh(key, () => Query <T>(sql, param, transaction, buffered, commandTimeout, commandType), cacheTime));
        }
        // ExecuteScalar End

        // CacheOrExecuteScalar Start
        protected T CacheOrExecuteScalar <T>(string key, string sql, object param = null, IDbTransaction transaction = null, int?commandTimeout = null, CommandType?commandType = null, int cacheTime = DefaultCacheTime) where T : class
        {
            return(CacheProvider.GetWithRefresh(key, () => ExecuteScalar <T>(sql, param, transaction, commandTimeout, commandType), cacheTime));
        }