public virtual async Task <Result> DeleteAsync(TDeleteDto dto, string deletedBy, CancellationToken cancellationToken)
        {
            var bo     = Mapper.Map <TEntity>(dto);
            var result = await DomainService.DeleteAsync(cancellationToken, bo, deletedBy).ConfigureAwait(false);

            if (result.IsFailure)
            {
                switch (result.ErrorType)
                {
                case ErrorType.ObjectValidationFailed:
                    return(result);

                case ErrorType.DatabaseValidationFailed:
                    return(result);

                case ErrorType.ObjectDoesNotExist:
                    return(result);

                case ErrorType.ConcurrencyConflict:
                    return(result);

                default:
                    throw new ArgumentException();
                }
            }

            if (HubContext != null)
            {
                await HubContext.DeletedAsync(dto);
            }

            return(Result.Ok());
        }