public async Task <ICollection <Guid> > Handle(CreateStatementsCommand request, CancellationToken cancellationToken) { var tasks = new List <Task <Guid> >(); foreach (var statement in request.Statements) { tasks.Add(_mediator.Send(CreateStatementCommand.Create(statement, persist: false), cancellationToken)); } var ids = await Task.WhenAll(tasks).ConfigureAwait(false); await _context.SaveChangesAsync(cancellationToken).ConfigureAwait(false); await _mediator.Publish(StatementsSaved.Create(ids)); return(ids); }
public async Task <ICollection <Guid> > Handle(CreateStatementsCommand request, CancellationToken cancellationToken) { using (var transaction = _context.Database.BeginTransaction()) { var ids = new List <Guid>(); foreach (var statement in request.Statements) { var id = await _mediator.Send(CreateStatementCommand.Create(statement), cancellationToken).ConfigureAwait(false); ids.Add(id); } await _context.SaveChangesAsync(cancellationToken); await transaction.CommitAsync(cancellationToken); return(ids); } }