public void ObjectValuesCanBeChangedInParentAndChildSubTransactions()
        {
            SetDatabaseModifyable();

            ClassWithAllDataTypes cwadt = DomainObjectIDs.ClassWithAllDataTypes1.GetObject <ClassWithAllDataTypes> ();

            Assert.That(cwadt.Int32Property, Is.Not.EqualTo(7));
            Assert.That(cwadt.Int16Property, Is.Not.EqualTo(8));

            using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
            {
                cwadt.Int32Property = 7;
                using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
                {
                    Assert.That(cwadt.Int32Property, Is.EqualTo(7));
                    cwadt.Int16Property = 8;
                    ClientTransaction.Current.Commit();
                }
                Assert.That(cwadt.Int32Property, Is.EqualTo(7));
                Assert.That(cwadt.Int16Property, Is.EqualTo(8));
                ClientTransaction.Current.Commit();
            }
            Assert.That(cwadt.Int32Property, Is.EqualTo(7));
            Assert.That(cwadt.Int16Property, Is.EqualTo(8));
            TestableClientTransaction.Commit();

            using (ClientTransaction.CreateRootTransaction().EnterDiscardingScope())
            {
                var objectInThisTransaction = cwadt.GetHandle().GetObject();
                Assert.That(objectInThisTransaction.Int32Property, Is.EqualTo(7));
                Assert.That(objectInThisTransaction.Int16Property, Is.EqualTo(8));
            }
        }