public virtual async Task <CommandResult <TData> > Handle(TRequest request, CancellationToken cancellationToken) { try { await _context.BeginTransactionAsync(); TData vm = await HandleCommand(request, cancellationToken); await _context.CommitTransactionAsync(); return(CommandResult <TData> .Ok(vm)); } catch (Exception e) { _context.RollbackTransaction(); return(CommandResult <TData> .Fail(e.Message)); } }