/// <summary> /// 执行指定表达式树所表示的查询。 /// </summary> /// <typeparam name="TResult">执行查询所生成的值的类型。</typeparam> /// <param name="expression">表示 LINQ 查询的表达式树</param> /// <returns></returns> public TResult Execute <TResult>(Expression expression) { if (!ExecuteCache.CanCache(expression)) { return((TResult)entityQueryProvider.Execute(expression)); } return(ExecuteCache.TryGet(expression, () => (TResult)entityQueryProvider.Execute(expression))); }
/// <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))); }
public IAsyncEnumerable <TResult> ExecuteEnumerableAsync <TResult>(Expression expression, CancellationToken cancellationToken) { if (!ExecuteCache.CanCache(expression)) { return(entityQueryProvider.ExecuteEnumerableAsync <TResult>(expression, cancellationToken)); } else { return(ExecuteCache.TryGet(expression, () => entityQueryProvider.ExecuteEnumerableAsync <TResult>(expression, cancellationToken))); } }
private IList <T> ExecuteList() { if (list == null) { if (provider == null) { list = new List <T>(); } else { list = ExecuteCache.TryGet(expression, () => provider.Execute <IEnumerable <T> >(expression)?.ToList()); } } return(list); }
/// <summary> /// 执行指定表达式树所表示的查询。 /// </summary> /// <param name="expression">表示 LINQ 查询的表达式树</param> /// <returns></returns> public object Execute(Expression expression) { ExecuteCache.TryExpire(expression); return(entityQueryProvider.Execute(expression)); }