public async IAsyncEnumerable <QueryReader> EnumerateAsync(IEnumerable <QueryData> queries, [EnumeratorCancellation] CancellationToken cancellationToken = default) { if (queries == null) { throw new ArgumentNullException(nameof(queries)); } if (this.Options.Schemas == null) { throw new InvalidOperationException("No schema builder found."); } #if NETSTANDARD2_1 await #endif using AdoConnection connection = new AdoConnection(this.Options); foreach (QueryData queryData in queries.NotNull()) { AdoHelper helper = new AdoHelper(queryData); if (string.IsNullOrWhiteSpace(queryData.QueryText)) { continue; } await foreach (DbDataReader dataReader in connection.ExecuteAsync(helper, cancellationToken)) { yield return(new QueryReader(dataReader, this.Options.Schemas)); } } }
public async Task <IList <TItem> > ListAsync <TItem>(IEnumerable <QueryData> queries, CancellationToken cancellationToken = default) { if (queries == null) { throw new ArgumentNullException(nameof(queries)); } if (this.Options.Schemas == null) { throw new InvalidOperationException("No schema builder found."); } ResultAdapter <TItem> adapter = new ResultAdapter <TItem>(this.Options.Schemas); #if NETSTANDARD2_1 await #endif using AdoConnection connection = new AdoConnection(this.Options); foreach (QueryData queryData in queries.NotNull()) { AdoHelper helper = new AdoHelper(queryData); if (string.IsNullOrWhiteSpace(queryData.QueryText)) { continue; } #if NETSTANDARD2_0 await connection.ExecuteAsync(helper, async (r) => { await adapter.AddResultAsync(r, cancellationToken).ConfigureAwait(false); }, cancellationToken).ConfigureAwait(false); #elif NETSTANDARD2_1 await foreach (DbDataReader dataReader in connection.ExecuteAsync(helper, cancellationToken)) { await adapter.AddResultAsync(dataReader, cancellationToken); } #endif } return(adapter.ToList()); }