コード例 #1
0
        /// <summary>
        /// Asynchronously handles the command request.
        /// </summary>
        /// <param name="request">The command request.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A task that represents the asynchronous operation.
        /// The task result contains the result of the command request.</returns>
        public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken)
        {
            try
            {
                cancellationToken.ThrowIfCancellationRequested();

                var response = await ProtectedHandleAsync(request, cancellationToken);

                if (SubEventType != SubEventType.None)
                {
                    var principal = PrincipalProvider.GetPrincipal();
                    var auditData = new AuditDataModel()
                    {
                        Entity  = response,
                        Command = request
                    };
                    await Audit.AddDefaultEventAsync(principal, auditData, SubEventType);
                }

                return(response);
            }
            catch (Exception)
            {
                Context.RollBackTransaction();

                throw;
            }
        }