예제 #1
0
        /// <summary>
        /// 异步的,执行指定表达式树所表示的查询。
        /// </summary>
        /// <typeparam name="TResult">执行查询所生成的值的类型。</typeparam>
        /// <param name="expression">一个表示的表达式树 LINQ 查询。</param>
        /// <param name="cancellationToken">取消操作的通知。</param>
        /// <returns></returns>
        public async Task <TResult> ExecuteAsync <TResult>(Expression expression, CancellationToken cancellationToken)
        {
            if (!ExecuteCache.CanCache(expression))
            {
                return(await entityQueryProvider.ExecuteAsync <TResult>(expression));
            }

            return(await ExecuteCache.TryGet(expression, () => entityQueryProvider.ExecuteAsync <TResult>(expression, cancellationToken)));
        }