public async Task <TResult> ExecuteAsync <TResult>(IEnumerable <Query> queries, QueryType queryType, CancellationToken cancellationToken = default) { if (queries == null) { throw new ArgumentNullException(nameof(queries)); } if (this.Options.Store == null) { throw new InvalidOperationException("No schema builder found."); } ISchema schema = this.Options.Store.GetSchema(typeof(TResult)); QueryBuffer buffer = new QueryBuffer(schema, queryType); await using IAsyncSession connection = this.Options.GetAsyncSession(); foreach (IBatch batch in this.FilterBatches(queries)) { await foreach (DbDataReader dataReader in connection.ExecuteAsync(batch, cancellationToken).ConfigureAwait(false)) { await buffer.InsertAsync(dataReader, cancellationToken).ConfigureAwait(false); } } return((TResult)buffer.Commit()); }
public async Task ExecuteAsync(IEnumerable <Command> commands, CancellationToken cancellationToken = default) { await using IAsyncSession session = this.Options.GetAsyncSession(); CommandBuffer buffer = new CommandBuffer(); foreach (IBatch batch in this.GetBufferedCommands(commands, buffer)) { await foreach (DbDataReader dataReader in session.ExecuteAsync(batch, cancellationToken).ConfigureAwait(false)) { buffer.Update(dataReader); } } buffer.Commit(); }
public async IAsyncEnumerable <QueryReader> EnumerateAsync(IEnumerable <Query> queries, [EnumeratorCancellation] CancellationToken cancellationToken = default) { if (queries == null) { throw new ArgumentNullException(nameof(queries)); } if (this.Options.Store == null) { throw new InvalidOperationException("No schema builder found."); } await using IAsyncSession connection = this.Options.GetAsyncSession(); foreach (IBatch batch in this.FilterBatches(queries)) { await foreach (DbDataReader dataReader in connection.ExecuteAsync(batch, cancellationToken).ConfigureAwait(false)) { yield return(new QueryReader(this.Options.Store, dataReader)); } } }