¿Cómo verificar si DbContext tiene una transacción?

Antecedentes: tengo el servicio WCF con SimpleInjector como IoC que crea una instancia de DbContext por solicitud WCF.

El propio backend es CQRS. CommandHandlers tiene muchos decoradores (validación, autorización, registro, algunas reglas comunes para diferentes grupos de controladores, etc.) y uno de ellos es 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;
            }
        }
    }
}

El problema ocurre cuando cualquier comando intenta encadenar la ejecución de otro comando dentro de la misma solicitud WCF. Obtuve una excepción esperada en esta línea:

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

porque mi instancia de DbContext ya tiene una transacción.

¿Hay alguna forma de verificar la existencia de la transacción actual?

Respuestas a la pregunta(2)

Su respuesta a la pregunta