Как проверить, есть ли у DbContext транзакция?

Справочная информация: у меня есть служба WCF с SimpleInjector в качестве IoC, который создает экземпляр DbContext для запроса WCF.

Сам бэкэнд это CQRS. У CommandHandlers есть много декораторов (проверка, авторизация, ведение журнала, некоторые общие правила для разных групп обработчиков и т. Д.), И одним из них является Transaction Decorator:

public class TransactionCommandHandlerDecorator<TCommand> : ICommandHandler<TCommand> 
    where TCommand : ICommand
{
    private readonly ICommandHandler<TCommand> _handler;
    private readonly IMyDbContext _context;
    private readonly IPrincipal _principal;

    public TransactionCommandHandlerDecorator(ICommandHandler<TCommand> handler,
        IMyDbContext context, IPrincipal principal)
    {
        _handler = handler;
        _context = context;
        _principal = principal;
    }

    void ICommandHandler<TCommand>.Handle(TCommand command)
    {
        using (var transaction = _context.Database.BeginTransaction())
        {
            try
            {
                var user = _context.User.Single(x => x.LoginName == _principal.Identity.Name);
                _handler.Handle(command);
                _context.SaveChangesWithinExplicitTransaction(user);
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw;
            }
        }
    }
}

Проблема возникает, когда какая-либо команда пытается выполнить цепочку выполнения другой команды в том же запросе WCF. Я получил ожидаемое исключение в этой строке:

using (var transaction = _context.Database.BeginTransaction())

потому что мой экземпляр DbContext уже имеет транзакцию.

Есть ли способ проверить существование текущей транзакции?

Ответы на вопрос(2)

Ваш ответ на вопрос