public async Task <TResponse> Handle( TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next) { if (request is ICommand <TResponse> == false || _data.HasActiveTransaction) { return(await next()); } try { await _data.BeginTransactionAsync(); var result = await next(); await _data.CommitAsync(); return(result); } catch { await _data.RollbackTransactionAsync(); throw; } }
public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next) { if (!request.GetType().IsSubclassOf(typeof(Command <TResponse>)) || _data.HasActiveTransaction) { return(await next()); } try { await _data.BeginTransactionAsync(); TResponse result = await next(); await _data.CommitAsync(); return(result); } catch { await _data.RollbackTransactionAsync(); throw; } }