コード例 #1
0
        private void CreateCriteriaLoaders()
        {
            //a criteria can use more than a single query (polymorphic queries), need to have a
            //way to correlate a loader to a result index
            int criteriaIndex = 0;

            foreach (CriteriaImpl criteria in criteriaQueries)
            {
                string[] implementors = factory.GetImplementors(criteria.EntityOrClassName);
                int      size         = implementors.Length;

                ISet <string> spaces = new HashSet <string>();

                for (int i = 0; i < size; i++)
                {
                    CriteriaLoader loader = new CriteriaLoader(
                        session.GetOuterJoinLoadable(implementors[i]),
                        factory,
                        criteria,
                        implementors[i],
                        session.EnabledFilters
                        );
                    loaders.Add(loader);
                    loaderCriteriaMap.Add(criteriaIndex);
                    spaces.UnionWith(loader.QuerySpaces);
                }
                criteriaIndex += 1;
            }
        }
コード例 #2
0
        private void CreateCriteriaLoaders()
        {
            //a criteria can use more than a single query (polymorphic queries), need to have a
            //way to correlate a loader to a result index
            int criteriaIndex = 0;

            foreach (CriteriaImpl criteria in criteriaQueries)
            {
                string[] implementors = factory.GetImplementors(criteria.EntityOrClassName);
                int      size         = implementors.Length;

                CriteriaLoader[] tmpLoaders = new CriteriaLoader[size];
                ISet <string>    spaces     = new HashedSet <string>();

                for (int i = 0; i < size; i++)
                {
                    CriteriaLoader loader = new CriteriaLoader(
                        session.GetOuterJoinLoadable(implementors[i]),
                        factory,
                        criteria,
                        implementors[i],
                        session.EnabledFilters
                        );
                    tmpLoaders[i] = loader;
                    loaderToResultIndex[loader] = criteriaIndex;
                    spaces.AddAll(tmpLoaders[i].QuerySpaces);
                }
                loaders.AddRange(tmpLoaders);
                criteriaIndex += 1;
            }
        }