Example #1
0
        /// <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;
        }
Example #2
0
        /// <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);
                }
            }
        }