Exemplo n.º 1
0
        public void LoadStoreMixedDomainObject()
        {
            SetDatabaseModifyable();

            ClientTransaction clientTransaction = ClientTransaction.CreateRootTransaction();

            var mixedInstance   = clientTransaction.ExecuteInScope(() => TargetClassForPersistentMixin.NewObject());
            var mixin           = Mixin.Get <MixinAddingPersistentProperties> (mixedInstance);
            var relationTarget1 = clientTransaction.ExecuteInScope(() => RelationTargetForPersistentMixin.NewObject());
            var relationTarget2 = clientTransaction.ExecuteInScope(() => RelationTargetForPersistentMixin.NewObject());
            var relationTarget3 = clientTransaction.ExecuteInScope(() => RelationTargetForPersistentMixin.NewObject());
            var relationTarget4 = clientTransaction.ExecuteInScope(() => RelationTargetForPersistentMixin.NewObject());
            var relationTarget5 = clientTransaction.ExecuteInScope(() => RelationTargetForPersistentMixin.NewObject());

            mixin.PersistentProperty      = 10;
            mixin.NonPersistentProperty   = 100;
            mixin.ExtraPersistentProperty = 1000;
            mixin.RelationProperty        = relationTarget1;
            mixin.VirtualRelationProperty = relationTarget2;
            mixin.CollectionProperty1Side.Add(relationTarget3);
            mixin.CollectionPropertyNSide        = relationTarget4;
            mixin.UnidirectionalRelationProperty = relationTarget5;

            mixedInstance.RootTransaction.Commit();

            var otherClientTransaction = ClientTransaction.CreateRootTransaction();

            var loadedInstance = mixedInstance.ID.GetObject <TargetClassForPersistentMixin> (otherClientTransaction);
            var loadedMixin    = Mixin.Get <MixinAddingPersistentProperties> (loadedInstance);

            Assert.That(loadedInstance, Is.Not.SameAs(mixedInstance));
            Assert.That(loadedMixin, Is.Not.SameAs(mixin));

            Assert.That(loadedMixin.PersistentProperty, Is.EqualTo(10));
            Assert.That(loadedMixin.NonPersistentProperty, Is.EqualTo(0));
            Assert.That(loadedMixin.ExtraPersistentProperty, Is.EqualTo(1000));
            Assert.That(loadedMixin.RelationProperty.ID, Is.EqualTo(mixin.RelationProperty.ID));
            Assert.That(loadedMixin.VirtualRelationProperty.ID, Is.EqualTo(mixin.VirtualRelationProperty.ID));
            Assert.That(loadedMixin.CollectionProperty1Side.Count, Is.EqualTo(mixin.CollectionProperty1Side.Count));
            Assert.That(loadedMixin.CollectionProperty1Side[0].ID, Is.EqualTo(mixin.CollectionProperty1Side[0].ID));
            Assert.That(loadedMixin.CollectionPropertyNSide.ID, Is.EqualTo(mixin.CollectionPropertyNSide.ID));
            Assert.That(loadedMixin.UnidirectionalRelationProperty.ID, Is.EqualTo(mixin.UnidirectionalRelationProperty.ID));
        }
Exemplo n.º 2
0
        public void GetSetCommitRollbackPersistentProperties()
        {
            using (TestableClientTransaction.CreateSubTransaction().EnterNonDiscardingScope())
            {
                IMixinAddingPersistentProperties properties = TargetClassForPersistentMixin.NewObject() as IMixinAddingPersistentProperties;
                Assert.That(properties, Is.Not.Null);

                properties.ExtraPersistentProperty = 10;
                properties.PersistentProperty      = 11;
                properties.NonPersistentProperty   = 12;

                Assert.That(properties.ExtraPersistentProperty, Is.EqualTo(10));
                Assert.That(properties.PersistentProperty, Is.EqualTo(11));
                Assert.That(properties.NonPersistentProperty, Is.EqualTo(12));

                ClientTransaction.Current.Commit();

                Assert.That(properties.ExtraPersistentProperty, Is.EqualTo(10));
                Assert.That(properties.PersistentProperty, Is.EqualTo(11));
                Assert.That(properties.NonPersistentProperty, Is.EqualTo(12));

                properties.ExtraPersistentProperty = 13;
                properties.PersistentProperty      = 14;
                properties.NonPersistentProperty   = 15;

                Assert.That(properties.ExtraPersistentProperty, Is.EqualTo(13));
                Assert.That(properties.PersistentProperty, Is.EqualTo(14));
                Assert.That(properties.NonPersistentProperty, Is.EqualTo(15));

                ClientTransaction.Current.Rollback();

                Assert.That(properties.ExtraPersistentProperty, Is.EqualTo(10));
                Assert.That(properties.PersistentProperty, Is.EqualTo(11));
                Assert.That(properties.NonPersistentProperty, Is.EqualTo(15));
            }
        }