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));
            }
        }