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)); }
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)); } }