private void DereferenceCollection(String propertyName, String role, QueryTranslator q)
        {
            collectionRole = role;
            IQueryableCollection collPersister = q.GetCollectionPersister(role);
            string name = q.CreateNameForCollection(role);

            AddJoin(name, collPersister.CollectionType);

            //if ( collPersister.HasWhere )
            //{
            //    join.AddCondition( collPersister.GetSQLWhereString( name ) );
            //}

            collectionName       = name;
            collectionOwnerName  = currentName;
            currentName          = name;
            currentProperty      = propertyName;
            componentPath.Length = 0;
            //componentPath = new StringBuilder();
            currentPropertyMapping = new CollectionPropertyMapping(collPersister);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="q"></param>
        public virtual void End(QueryTranslator q)
        {
            ignoreInitialJoin = false;

            IType propertyType = PropertyType;

            if (propertyType != null && propertyType.IsCollectionType)
            {
                collectionRole = ((CollectionType)propertyType).Role;
                collectionName = q.CreateNameForCollection(collectionRole);
                PrepareForIndex(q);
            }
            else
            {
                columns = CurrentColumns();
                SetType(q);
            }

            //important!!
            continuation = false;
        }
        private void DereferenceCollection(String propertyName, String role, QueryTranslator q)
        {
            collectionRole = role;
            IQueryableCollection collPersister = q.GetCollectionPersister(role);

            string[] colNames = collPersister.KeyColumnNames;
            string   name     = q.CreateNameForCollection(role);

            AddJoin(collPersister.TableName, name, colNames);

            if (collPersister.HasWhere)
            {
                join.AddCondition(collPersister.GetSQLWhereString(name));
            }
            collectionName      = name;
            collectionOwnerName = currentName;
            currentName         = name;
            currentProperty     = propertyName;
            componentPath       = null;
            //componentPath = new StringBuilder();
            currentPropertyMapping = new CollectionPropertyMapping(collPersister);
        }