public virtual Task <TResult> ExecuteAsync <TResult>(Expression query, CancellationToken cancellationToken) { Check.NotNull(query, nameof(query)); var queryContext = _queryContextFactory.Create(); queryContext.CancellationToken = cancellationToken; query = ExtractParameters(query, queryContext); try { return(CompileAsyncQuery <TResult>(query)(queryContext).First(cancellationToken)); } catch (Exception exception) { _logger .LogError( CoreLoggingEventId.DatabaseError, () => new DatabaseErrorLogState(_contextType), exception, e => CoreStrings.LogExceptionDuringQueryIteration(Environment.NewLine, e)); throw; } }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual IAsyncEnumerable <TResult> ExecuteAsync <TResult>(Expression query) { Check.NotNull(query, nameof(query)); var queryContext = _queryContextFactory.Create(); query = ExtractParameters(query, queryContext); return(CompileAsyncQuery <TResult>(query)(queryContext)); }
public virtual Task <TResult> ExecuteAsync <TResult>(Expression query, CancellationToken cancellationToken) { Check.NotNull(query, nameof(query)); var queryContext = _contextFactory.Create(); queryContext.CancellationToken = cancellationToken; query = Preprocess(query, queryContext); return(CompileAsyncQuery <TResult>(query)(queryContext) .First(cancellationToken)); }