/// <summary>
        /// Creates a MappingFragment instance.
        /// </summary>
        /// <param name="storeEntitySet">The EntitySet corresponding to the table of view being mapped.</param>
        /// <param name="typeMapping">The TypeMapping that contains this MappingFragment.</param>
        /// <param name="makeColumnsDistinct">Flag that indicates whether to include 'DISTINCT' when generating queries.</param>
        public MappingFragment(EntitySet storeEntitySet, TypeMapping typeMapping, bool makeColumnsDistinct)
        {
            Check.NotNull(storeEntitySet, "storeEntitySet");
            Check.NotNull(typeMapping, "typeMapping");

            m_tableExtent = storeEntitySet;
            m_typeMapping = typeMapping;
            m_isSQueryDistinct = makeColumnsDistinct;
        }
        protected override void Visit(TypeMapping typeMapping)
        {
            int index;
            if (!AddObjectToSeenListAndHashBuilder(typeMapping, out index))
            {
                return;
            }

            AddObjectStartDumpToHashBuilder(typeMapping, index);

            #region Inner data visit

            base.Visit(typeMapping);

            #endregion

            AddObjectEndDumpToHashBuilder();
        }