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; } }
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; } }