コード例 #1
0
        public virtual void Test_AddDirtyChildrenToTransactionCommitter_AddedChild()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisationTestBO = OrganisationTestBO.CreateSavedOrganisation();
            MultipleRelationship <ContactPersonTestBO> relationship =
                organisationTestBO.Relationships.GetMultiple <ContactPersonTestBO>("ContactPeople");
            RelationshipDef relationshipDef = (RelationshipDef)relationship.RelationshipDef;

            relationshipDef.RelationshipType = RelationshipType.Association;

            ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateSavedContactPerson();

            relationship.BusinessObjectCollection.Add(contactPerson);
            SingleRelationship <OrganisationTestBO> reverseRelationship =
                contactPerson.Relationships.GetSingle <OrganisationTestBO>("Organisation");


            TransactionCommitter tc = (TransactionCommitter)BORegistry.DataAccessor.CreateTransactionCommitter();

            //---------------Assert PreConditions---------------
            Assert.AreEqual(0, tc.OriginalTransactions.Count);
            Assert.IsNotNull(reverseRelationship);

            //---------------Execute Test ----------------------
            relationship.AddDirtyChildrenToTransactionCommitter(tc);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, tc.OriginalTransactions.Count);

            Assert.IsInstanceOf(typeof(TransactionalSingleRelationship_Added), tc.OriginalTransactions[0]);
            Assert.AreSame(relationship, ((TransactionalSingleRelationship_Added)tc.OriginalTransactions[0]).Relationship);
        }
コード例 #2
0
        public void Test_NewParentWithClassTableInheritance_NewChild()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            ClassDef.ClassDefs.Add(new XmlClassDefsLoader(BOBroker.GetClassDefsXml(), new DtdLoader(), new DefClassFactory()).LoadClassDefs());

            Habanero.Test.Structure.Person person = new Person();
            person.LastName = "bob";
            Vehicle vehicle = new Vehicle();

            vehicle.DateAssembled = DateTime.Now;
            person.VehiclesOwned.Add(vehicle);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            TransactionCommitter committer = (TransactionCommitter)BORegistry.DataAccessor.CreateTransactionCommitter();

            committer.AddBusinessObject(person);
            committer.CommitTransaction();
            //---------------Test Result -----------------------
            Assert.AreEqual(2, committer.OriginalTransactions.Count, "There should only be two transactions: one insert for the person and one insert for the vehicle");
        }
コード例 #3
0
ファイル: Relationship.cs プロジェクト: kevinbosman/habanero
		/// <summary>
		/// Deletes the Child Bo identified by <paramref name="bo"/>
		/// </summary>
		/// <param name="committer"></param>
		/// <param name="bo"></param>
		protected virtual void DeleteChild(TransactionCommitter committer, IBusinessObject bo)
		{
			if (bo == null) return;
			if (!bo.Status.IsDeleted)
			{
				bo.MarkForDelete();
			}
//            if (bo.Status.IsNew) return;
			committer.ExecuteTransactionToDataSource(committer.CreateTransactionalBusinessObject(bo));
		}
コード例 #4
0
ファイル: Relationship.cs プロジェクト: kevinbosman/habanero
		/// <summary>
		/// DereferenceThe Child <see cref="IBusinessObject"/> identified by <paramref name="bo"/>
		/// </summary>
		/// <param name="committer">The transaction commtter responsible for persisting this dereference.</param>
		/// <param name="bo">The Business Object being dereferenced.</param>
		protected void DereferenceChild(TransactionCommitter committer, IBusinessObject bo)
		{
			foreach (RelPropDef relPropDef in RelationshipDef.RelKeyDef)
			{
				bo.SetPropertyValue(relPropDef.RelatedClassPropName, null);
			}
			if (bo.Status.IsNew) return;
			committer.ExecuteTransactionToDataSource(committer.CreateTransactionalBusinessObject(bo));
		}
コード例 #5
0
ファイル: Relationship.cs プロジェクト: kevinbosman/habanero
		/// <summary>
		/// Adds all the marked for deleted children to the transaction committer and commits it.
		/// </summary>
		/// <param name="committer"></param>
		internal abstract void DeleteMarkedForDeleteChildren(TransactionCommitter committer);
コード例 #6
0
ファイル: Relationship.cs プロジェクト: kevinbosman/habanero
		/// <summary>
		/// Dereferences the Removed Children and adds the dereference transactionItem to the transaction committer
		/// </summary>
		/// <param name="committer"></param>
		internal abstract void DereferenceRemovedChildren(TransactionCommitter committer);
コード例 #7
0
ファイル: Relationship.cs プロジェクト: kevinbosman/habanero
		/// <summary>
		/// Adds all dirty children to the <see cref="TransactionCommitter"/>
		/// </summary>
		/// <param name="committer"></param>
		internal abstract void AddDirtyChildrenToTransactionCommitter(TransactionCommitter committer);