示例#1
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);

            await using AsyncSession connection = new AsyncSession(this.Options);

            foreach (QueryData queryData in queries.NotNull())
            {
                Query builder = new Query(queryData);

                if (string.IsNullOrWhiteSpace(queryData.QueryText))
                {
                    continue;
                }

                await foreach (DbDataReader dataReader in connection.ExecuteAsync(builder, cancellationToken).ConfigureAwait(false))
                {
                    await adapter.AddResultAsync(dataReader, cancellationToken).ConfigureAwait(false);
                }
            }

            return(adapter.ToList());
        }
示例#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());
        }