internal override void AddDirtyChildrenToTransactionCommitter(TransactionCommitter transactionCommitter) { foreach (var businessObject in GetDirtyChildren()) { if (this.OwningBOHasForeignKey) { transactionCommitter.InsertBusinessObject(businessObject); } else { transactionCommitter.AddBusinessObject(businessObject); } } if (this.RelationshipDef.RelationshipType == RelationshipType.Association) { if (IsRelatedBOPropsDirty() && _relatedBo != null && !_relatedBo.Status.IsNew) { transactionCommitter.AddAddedChildBusinessObject(this, _relatedBo); } else if (IsRemoved) { transactionCommitter.AddRemovedChildBusinessObject(this, RemovedBO); } } }
/// <summary> /// DereferenceChildren /// </summary> /// <param name="committer"></param> internal override void DereferenceChildren(TransactionCommitter committer) { TBusinessObject businessObject = GetRelatedObject(); if (businessObject != null) { DereferenceChild(committer, businessObject); } }
internal override void DereferenceRemovedChildren(TransactionCommitter committer) { IList col = this.CurrentBusinessObjectCollection.RemovedBusinessObjects; for (int i = col.Count - 1; i >= 0; i--) { var bo = (IBusinessObject)col[i]; DereferenceChild(committer, bo); } }
internal override void DeleteMarkedForDeleteChildren(TransactionCommitter committer) { IList col = CurrentBusinessObjectCollection.MarkedForDeleteBusinessObjects; for (int i = col.Count - 1; i >= 0; i--) { var bo = (IBusinessObject)col[i]; DeleteChild(committer, bo); } }
internal override void DereferenceChildren(TransactionCommitter committer) { IBusinessObjectCollection col = BusinessObjectCollection; for (var i = col.Count - 1; i >= 0; i--) { var bo = col[i]; DereferenceChild(committer, bo); } }
internal void DeleteChildren(TransactionCommitter transactionCommitter) { foreach (RelationshipBase relationship in this) { relationship.DeleteMarkedForDeleteChildren(transactionCommitter); if (relationship.DeleteParentAction == DeleteParentAction.DeleteRelated) { relationship.DeleteChildren(transactionCommitter); } } }
// // private bool BoIsDeletedAndDeleteActionIsDeleteRelated(IRelationship relationship) // { // return (this._bo.Status.IsDeleted && relationship.DeleteParentAction == DeleteParentAction.DeleteRelated ); // } internal void DereferenceChildren(TransactionCommitter transactionCommitter) { foreach (RelationshipBase relationship in this) { if (relationship.DeleteParentAction == DeleteParentAction.DereferenceRelated) { relationship.DereferenceChildren(transactionCommitter); } relationship.DereferenceRemovedChildren(transactionCommitter); } }
/// <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)); }
/// <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)); }
internal override void DeleteChildren(TransactionCommitter committer) { IBusinessObjectCollection col = BusinessObjectCollection; for (var i = col.Count - 1; i >= 0; i--) { var businessObject = col[i]; if (!businessObject.Status.IsNew) { DeleteChild(committer, businessObject); } } }
internal void AddDirtyChildrenToTransactionCommitter(TransactionCommitter transactionCommitter) { if (_bo.Status.IsDeleted) { return; } foreach (RelationshipBase relationship in this) { // if (BoIsDeletedAndDeleteActionIsDeleteRelated(relationship)) continue; relationship.AddDirtyChildrenToTransactionCommitter(transactionCommitter); } }
internal override void AddDirtyChildrenToTransactionCommitter(TransactionCommitter transactionCommitter) { if (!_boCol.IsValueCreated) { return; } var currentCol = _boCol.Value; foreach (TBusinessObject businessObject in GetDirtyChildren()) { transactionCommitter.AddBusinessObject(businessObject); } if (!this.OwningBO.Status.IsDeleted) { foreach (TBusinessObject businessObject in currentCol.AddedBusinessObjects) { transactionCommitter.AddAddedChildBusinessObject(this, businessObject); } } foreach (TBusinessObject businessObject in currentCol.RemovedBusinessObjects) { transactionCommitter.AddRemovedChildBusinessObject(this, businessObject); } }
/// <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);
/// <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);
/// <summary> /// Adds all dirty children to the <see cref="TransactionCommitter"/> /// </summary> /// <param name="committer"></param> internal abstract void AddDirtyChildrenToTransactionCommitter(TransactionCommitter committer);
/// <summary> /// Delete Children /// </summary> /// <param name="committer"></param> internal override void DeleteChildren(TransactionCommitter committer) { DeleteChild(committer, GetRelatedObject()); }
internal override void DereferenceRemovedChildren(TransactionCommitter committer) { //DO Nothing Single relationship does not store children; }
internal override void DeleteMarkedForDeleteChildren(TransactionCommitter committer) { //Do nothing single relationship does not have children }