public static ISet<string> GetUniqueCandidateProperties( IList<ViewFactoryForge> forges, Attribute[] annotations) { var disableUniqueImplicit = HintEnum.DISABLE_UNIQUE_IMPLICIT_IDX.GetHint(annotations) != null; if (forges == null || forges.IsEmpty()) { return null; } if (forges[0] is GroupByViewFactoryForge) { var grouped = (GroupByViewFactoryForge) forges[0]; var criteria = grouped.CriteriaExpressions; var groupedCriteria = ExprNodeUtilityQuery.GetPropertyNamesIfAllProps(criteria); if (groupedCriteria == null) { return null; } var inner = grouped.Groupeds[0]; if (inner is DataWindowViewForgeUniqueCandidate && !disableUniqueImplicit) { var uniqueFactory = (DataWindowViewForgeUniqueCandidate) inner; var uniqueCandidates = uniqueFactory.UniquenessCandidatePropertyNames; if (uniqueCandidates != null) { uniqueCandidates.AddAll(groupedCriteria); } return uniqueCandidates; } return null; } if (forges[0] is DataWindowViewForgeUniqueCandidate && !disableUniqueImplicit) { var uniqueFactory = (DataWindowViewForgeUniqueCandidate) forges[0]; return uniqueFactory.UniquenessCandidatePropertyNames; } if (forges[0] is VirtualDWViewFactoryForge) { var vdw = (VirtualDWViewFactoryForge) forges[0]; return vdw.UniqueKeys; } return null; }