public async Task InTransactionAsync(Func <Task> taskAction)
        {
            // Short circuit
            if (taskAction == null)
            {
                return;
            }

            try
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required, options, TransactionScopeAsyncFlowOption.Enabled))
                {
                    await taskAction();

                    scope.Complete();
                }
            }
            catch (EntityException e)
            {
                if (ConflictingTransactionException.Matches(e))
                {
                    throw new ConflictingTransactionException(e);
                }

                throw;
            }
        }
 public void InTransaction(Action action)
 {
     try
     {
         using (var scope = new TransactionScope(TransactionScopeOption.Required, options))
         {
             action();
             scope.Complete();
         }
     }
     catch (EntityException e)
     {
         if (ConflictingTransactionException.Matches(e))
         {
             throw new ConflictingTransactionException(e);
         }
         else
         {
             throw;
         }
     }
 }