/// <summary> /// Creates a deep copy of current instance. /// </summary> /// <returns>DbRelationBucket that is a coppy of current instance.</returns> public RelationBucket Clone() { RelationBucket clonedBucket = new RelationBucket(); for (int i = 0; i < this.relations.Count; i++) { DbRelation currRelation = this.relations[i]; DbRelation clonedRelation = currRelation.Clone(currRelation.Child.ColumnAliasesArePrefixed, currRelation.Parent.ColumnAliasesArePrefixed); JoinMode mode = this.joinModes[i]; clonedBucket.Add(clonedRelation, mode.ParentAsOuter, mode.ChildrenAsOuter); } return clonedBucket; }
/// <summary> /// Merges a specified RelationBucket object into the current RelationBucket so that there are no duplicate relations. /// </summary> /// <param name="bucket">The RelationBucket that will be merged.</param> public void Merge(RelationBucket bucket) { for (int relationIdx = 0; relationIdx < bucket.relations.Count; relationIdx++) { DbRelation newRelation = bucket.relations[relationIdx]; JoinMode newJoinMode = (JoinMode)bucket.joinModes[relationIdx]; DbRelation existingEqualRelation = this.relations[newRelation.Parent, newRelation.Child]; if (existingEqualRelation == null) { this.relations.Add(newRelation); this.joinModes.Add(newJoinMode); } } }