System.Transactions.Tests.TransactionScopeTest.ExplicitTransaction3 C# (CSharp) Method

ExplicitTransaction3() private method

private ExplicitTransaction3 ( ) : void
return void
        public void ExplicitTransaction3()
        {
            Assert.Null(Transaction.Current);
            CommittableTransaction ct = new CommittableTransaction();
            Transaction oldTransaction = Transaction.Current;

            Transaction.Current = ct;
            try
            {
                IntResourceManager irm = new IntResourceManager(1);

                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
                {
                    Assert.True(ct != Transaction.Current, "Scope with RequiresNew should have a new ambient transaction");

                    irm.Value = 3;
                    scope.Complete();
                }

                irm.Value = 2;

                Assert.Equal(3, irm.Actual);

                Assert.Equal(ct, Transaction.Current);
                ct.Commit();
                Assert.Equal(2, irm.Actual);
            }
            finally
            {
                Transaction.Current = oldTransaction;
            }
        }