Esempio n. 1
0
        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));
                }
            }
        }
Esempio n. 2
0
        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());
        }