System\Data\Mapping\ViewGeneration\CellCreator.cs (24)
98var sSideMembersToBeExpanded = new Set<MemberPath>();
103foreach (var memberToExpand in cell.SQuery.GetProjectedMembers()
120var cSideMembersForSSideExpansionCandidates = new Dictionary<MemberPath, Set<MemberPath>>();
123foreach (var sSideMemberToExpand in sSideMembersToBeExpanded)
127Set<MemberPath> cSidePaths = null;
130cSidePaths = new Set<MemberPath>();
144foreach (var memberToExpand in sSideMembersToBeExpanded)
165foreach (var cMemberToExpand in cell.CQuery.GetProjectedMembers().Intersect(mappedCSideMembers))
193private bool TryCreateAdditionalCellWithCondition(Cell originalCell, MemberPath memberToExpand, bool conditionValue, ViewTarget viewTarget, out Cell result)
200MemberPath leftExtent = originalCell.GetLeftQuery(viewTarget).SourceExtentMemberPath;
201MemberPath rightExtent = originalCell.GetRightQuery(viewTarget).SourceExtentMemberPath;
206MemberPath rightSidePath = rightConditionMemberSlot.MemberPath;
323MemberPath cRootExtent = new MemberPath(extent);
334MemberPath sRootExtent = new MemberPath(fragmentMap.TableSet);
364MemberPath cNode, List<ProjectedSlot> cSlots,
366MemberPath sRootExtent,
388MemberPath cAttributeNode = new MemberPath(cNode, scalarPropMap.EdmProperty);
392MemberPath sAttributeNode = new MemberPath(sRootExtent, scalarPropMap.ColumnProperty);
408MemberPath complexMemberNode = new MemberPath(cNode, complexPropMap.EdmProperty);
432MemberPath associationEndNode = new MemberPath(cNode, associationEndPropertypMap.EndMember);
468private static BoolExpression GetConditionExpression(MemberPath member, StorageConditionPropertyMapping conditionMap)
473MemberPath conditionMemberNode = new MemberPath(member, conditionMember);
499private static bool IsBooleanMember(MemberPath path)
System\Data\Mapping\ViewGeneration\QueryRewriting\FragmentQuery.cs (13)
28private HashSet<MemberPath> m_attributes;
31public HashSet<MemberPath> Attributes
46return new FragmentQuery(null /*label*/, fromVariable, new HashSet<MemberPath>(cellQuery.GetProjectedMembers()), whereClause);
57return new FragmentQuery(label, null /* fromVariable */, new HashSet<MemberPath>(), whereClause);
60public static FragmentQuery Create(IEnumerable<MemberPath> attrs, BoolExpression whereClause)
67return new FragmentQuery(null /* no name */, null /* no fromVariable*/, new MemberPath[] { }, whereClause);
70internal FragmentQuery(string label, BoolExpression fromVariable, IEnumerable<MemberPath> attrs, BoolExpression condition)
75m_attributes = new HashSet<MemberPath>(attrs);
100foreach (MemberPath value in this.Attributes)
119internal static BoolExpression CreateMemberCondition(MemberPath path, Constant domainValue, MemberDomainMap domainMap)
170foreach (MemberPath member in q.Attributes)
172attrHashCode ^= MemberPath.EqualityComparer.GetHashCode(member);
178varHashCode ^= MemberPath.EqualityComparer.GetHashCode(oneOf.RestrictedMemberSlot.MemberPath);
System\Data\Mapping\ViewGeneration\QueryRewriting\QueryRewriter.cs (73)
43MemberPath _extentPath;
52List<MemberPath> _keyAttributes;
63Dictionary<MemberPath, CaseStatement> _caseStatements = new Dictionary<MemberPath, CaseStatement>();
89_keyAttributes = new List<MemberPath>(MemberPath.GetKeyMembers(context.Extent, _domainMap));
174internal Dictionary<MemberPath, CaseStatement> CaseStatements
207private IEnumerable<Constant> GetDomain(MemberPath currentPath)
209if (_context.ViewTarget == ViewTarget.QueryView && MemberPath.EqualityComparer.Equals(currentPath, _extentPath))
243List<MemberPath> members = new List<MemberPath>(_domainMap.ConditionMembers(_extentPath.Extent));
244foreach (MemberPath currentPath in members)
265private void RemoveUnusedValueFromStoreDomain(Constant domainValue, MemberPath currentPath)
341private bool AddRewritingToCaseStatement(Tile<FragmentQuery> rewriting, CaseStatement caseStatement, MemberPath currentPath, Constant domainValue)
386private void EnsureConfigurationIsFullyMapped(MemberPath currentPath,
438List<MemberPath> nonConditionalAttributes = GetNonConditionalScalarMembers(edmType, currentPath, _domainMap).Union(GetNonConditionalComplexMembers(edmType, currentPath, _domainMap)).ToList();
439IEnumerable<MemberPath> notCoverdAttributes;
445nonConditionalAttributes = new List<MemberPath>(nonConditionalAttributes.Where(a => !a.IsPartOfKey));
453foreach (MemberPath complexMember in GetConditionalComplexMembers(edmType, currentPath, _domainMap))
458foreach (MemberPath scalarMember in GetConditionalScalarMembers(edmType, currentPath, _domainMap))
468private static List<String> GetTypeBasedMemberPathList(IEnumerable<MemberPath> nonConditionalScalarAttributes)
472foreach (MemberPath memberPath in nonConditionalScalarAttributes)
480private void AddUnrecoverableAttributesError(IEnumerable<MemberPath> attributes, BoolExpression domainAddedWhereClause, ErrorLog errorLog)
493private void GenerateCaseStatements(IEnumerable<MemberPath> members,
503foreach (MemberPath currentPath in members)
601private void AddElseDefaultToCaseStatement(MemberPath currentPath, CaseStatement caseStatement, List<Constant> domain,
678foreach (MemberPath memberPath in _context.MemberMaps.ProjectedSlotMap.Members)
686HashSet<MemberPath> attributes = new HashSet<MemberPath>(_keyAttributes);
696IEnumerable<MemberPath> notCoveredAttributes;
713IEnumerable<MemberPath> notCoveredAttributes;
764Dictionary<MemberPath, CaseStatement> newCaseStatements = new Dictionary<MemberPath, CaseStatement>();
785MemberPath memberPath = _context.MemberMaps.ProjectedSlotMap[memberNum];
804private bool FindRewritingAndUsedViews(IEnumerable<MemberPath> attributes, BoolExpression whereClause,
807IEnumerable<MemberPath> notCoveredAttributes;
814private bool FindRewritingAndUsedViews(IEnumerable<MemberPath> attributes, BoolExpression whereClause,
816out IEnumerable<MemberPath> notCoveredAttributes)
827private bool FindRewriting(IEnumerable<MemberPath> attributes, BoolExpression whereClause,
828out Tile<FragmentQuery> rewriting, out IEnumerable<MemberPath> notCoveredAttributes)
841private bool RewriteQuery(Tile<FragmentQuery> toFill, Tile<FragmentQuery> toAvoid, out Tile<FragmentQuery> rewriting, out IEnumerable<MemberPath> notCoveredAttributes,
844notCoveredAttributes = new List<MemberPath>();
883Dictionary<MemberPath, FragmentQuery> attributeConditions = new Dictionary<MemberPath, FragmentQuery>();
884foreach (MemberPath attribute in NonKeys(toFillQuery.Attributes))
897foreach (MemberPath attribute in NonKeys(toFillQuery.Attributes))
941Dictionary<MemberPath, FragmentQuery> attributeConditions)
950foreach (MemberPath projectedAttribute in NonKeys(view.Attributes))
963foreach (MemberPath projectedAttribute in NonKeys(view.Attributes))
990private bool CoverAttribute(MemberPath projectedAttribute, FragmentQuery view, Dictionary<MemberPath, FragmentQuery> attributeConditions, FragmentQuery toFillQuery)
1017Set<MemberPath> connectedVariables = GetVariables(query);
1116private BoolExpression CreateMemberCondition(MemberPath path, Constant domainValue)
1121private FragmentQuery CreateMemberConditionQuery(MemberPath currentPath, Constant domainValue)
1126internal static FragmentQuery CreateMemberConditionQuery(MemberPath currentPath, Constant domainValue,
1127IEnumerable<MemberPath> keyAttributes, MemberDomainMap domainMap)
1133IEnumerable<MemberPath> attributes = keyAttributes;
1137attributes = keyAttributes.Concat(new MemberPath[] { currentPath });
1155private static IEnumerable<MemberPath> GetNonConditionalScalarMembers(EdmType edmType, MemberPath currentPath, MemberDomainMap domainMap)
1160private static IEnumerable<MemberPath> GetConditionalComplexMembers(EdmType edmType, MemberPath currentPath, MemberDomainMap domainMap)
1165private static IEnumerable<MemberPath> GetNonConditionalComplexMembers(EdmType edmType, MemberPath currentPath, MemberDomainMap domainMap)
1170private static IEnumerable<MemberPath> GetConditionalScalarMembers(EdmType edmType, MemberPath currentPath, MemberDomainMap domainMap)
1175private IEnumerable<MemberPath> NonKeys(IEnumerable<MemberPath> attributes)
1233private static bool IsDefaultValue(Constant domainValue, MemberPath path)
1250private Set<MemberPath> GetVariables(FragmentQuery query)
1252IEnumerable<MemberPath> memberVariables =
1258return new Set<MemberPath>(memberVariables, MemberPath.EqualityComparer);
System\Data\Mapping\ViewGeneration\QueryRewriting\RewritingValidator.cs (16)
34private IEnumerable<MemberPath> _keyAttributes;
42_keyAttributes = MemberPath.GetKeyMembers(_viewgenContext.Extent, _domainMap);
195foreach (MemberPath column in _domainMap.ConditionMembers(_viewgenContext.Extent))
244foreach (MemberPath column in _domainMap.ConditionMembers(_viewgenContext.Extent))
284Constant constant, MemberPath member,
326private static FragmentQuery AddNullConditionOnCSideFragment(LeftCellWrapper wrapper, MemberPath member, MemberMaps memberMaps)
353foreach (MemberPath column in _domainMap.NonConditionMembers(_viewgenContext.Extent))
466private bool TryGetCellTreeNode(MemberPath memberPath, Constant value, out CellTreeNode singleNode)
505List<MemberPath> collidingColumns = new List<MemberPath>();
516MemberPath tableMember = m_viewgenContext.MemberMaps.ProjectedSlotMap[i];
519if (!MemberPath.EqualityComparer.Equals(thisSlot.MemberPath, thatSlot.MemberPath))
530string columnsString = MemberPath.PropertiesToUserString(collidingColumns, false);
561internal readonly MemberPath Member;
564public MemberValueBinding(MemberPath member, Constant value)
579return MemberPath.EqualityComparer.Equals(Member, other.Member) &&
System\Data\Mapping\ViewGeneration\Structures\Constant.cs (8)
55internal abstract StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias);
62internal abstract DbExpression AsCqt(DbExpression row, MemberPath outputMember);
160internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias)
171internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
231internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias)
240internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
302internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias)
311internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
System\Data\Mapping\ViewGeneration\Structures\Domain.cs (13)
118internal static CellConstantSet DeriveDomainFromMemberPath(MemberPath memberPath, EdmItemCollection edmItemCollection, bool leaveDomainUnbounded)
181internal static bool TryGetDefaultValueForMemberPath(MemberPath memberPath, out Constant defaultConstant)
197internal static Constant GetDefaultValueForMemberPath(MemberPath memberPath, IEnumerable<LeftCellWrapper> wrappersForErrorReporting,
337internal static Dictionary<MemberPath, CellConstantSet>
341Dictionary<MemberPath, CellConstantSet> cDomainMap =
342new Dictionary<MemberPath, CellConstantSet>(MemberPath.EqualityComparer);
388internal static Dictionary<MemberPath, CellConstantSet>
392Dictionary<MemberPath, CellConstantSet> updateDomainMap = new Dictionary<MemberPath, CellConstantSet>(MemberPath.EqualityComparer);
437MemberPath sSlotMemberPath = sSlot.MemberPath;
469.Where(restriction => MemberPath.EqualityComparer.Equals(restriction.RestrictedMemberSlot.MemberPath, slot.MemberPath))
System\Data\Mapping\ViewGeneration\Structures\MemberDomainMap.cs (34)
36private Dictionary<MemberPath, CellConstantSet> m_conditionDomainMap;
39private Dictionary<MemberPath, CellConstantSet> m_nonConditionDomainMap;
46private Set<MemberPath> m_projectedConditionMembers = new Set<MemberPath>();
54private MemberDomainMap(Dictionary<MemberPath, CellConstantSet> domainMap,
55Dictionary<MemberPath, CellConstantSet> nonConditionDomainMap, EdmItemCollection edmItemCollection)
66m_conditionDomainMap = new Dictionary<MemberPath, CellConstantSet>(MemberPath.EqualityComparer);
69Dictionary<MemberPath, CellConstantSet> domainMap = null;
88MemberPath memberPath = condition.RestrictedMemberSlot.MemberPath;
136m_nonConditionDomainMap = new Dictionary<MemberPath, CellConstantSet>(MemberPath.EqualityComparer);
144MemberPath member = slot.MemberPath;
163internal bool IsProjectedConditionMember(MemberPath memberPath)
196private void ExpandDomainsIfNeeded(Dictionary<MemberPath, CellConstantSet> domainMapForMembers)
201foreach (MemberPath path in domainMapForMembers.Keys)
236private static void ReduceEnumerableDomainToEnumeratedValues(ViewTarget target, Dictionary<MemberPath, CellConstantSet> domainMap, ConfigViewGenerator config,
239foreach (MemberPath member in domainMap.Keys)
281MemberPath cPath = cSlot.MemberPath;
282MemberPath sPath = sSlot.MemberPath;
302private static void ExpandNegationsInDomainMap(Dictionary<MemberPath, Set<Constant>> domainMap)
304foreach (var path in domainMap.Keys.ToArray())
310internal bool IsConditionMember(MemberPath path)
315internal IEnumerable<MemberPath> ConditionMembers(EntitySetBase extent)
317foreach (MemberPath path in m_conditionDomainMap.Keys)
327internal IEnumerable<MemberPath> NonConditionMembers(EntitySetBase extent)
329foreach (MemberPath path in m_nonConditionDomainMap.Keys)
342internal void AddSentinel(MemberPath path)
351internal void RemoveSentinel(MemberPath path)
359internal IEnumerable<Constant> GetDomain(MemberPath path)
364private CellConstantSet GetDomainInternal(MemberPath path)
376internal void UpdateConditionMemberDomain(MemberPath path, IEnumerable<Constant> domainValues)
386private void AddToDomainMap(MemberPath member, IEnumerable<Constant> domainValues)
401foreach (MemberPath memberPath in m_conditionDomainMap.Keys)
System\Data\Mapping\ViewGeneration\Structures\MemberPath.cs (33)
27internal sealed class MemberPath : InternalBase, IEquatable<MemberPath>
38internal static readonly IEqualityComparer<MemberPath> EqualityComparer = new Comparer();
68internal MemberPath(MemberPath prefix, EdmMember last)
358internal static bool AreAllMembersNullable(IEnumerable<MemberPath> members)
360foreach (MemberPath path in members)
378internal static string PropertiesToUserString(IEnumerable<MemberPath> members, bool fullPath)
382foreach (MemberPath path in members)
525public bool Equals(MemberPath right)
532MemberPath right = obj as MemberPath;
554internal static IEnumerable<MemberPath> GetKeyMembers(EntitySetBase extent, MemberDomainMap domainMap)
556MemberPath extentPath = new MemberPath(extent);
557List<MemberPath> keyAttributes = new List<MemberPath>(
563internal IEnumerable<MemberPath> GetMembers(EdmType edmType, bool? isScalar, bool? isConditional, bool? isPartOfKey, MemberDomainMap domainMap)
565MemberPath currentPath = this;
572foreach (MemberPath endKey in new MemberPath(currentPath, edmMember).GetMembers(
588MemberPath childPath = new MemberPath(currentPath, childProperty);
603internal bool IsEquivalentViaRefConstraint(MemberPath path1)
605MemberPath path0 = this;
654MemberPath assocEndPath0 = path0.GetCorrespondingAssociationPath(assocSet);
655MemberPath assocEndPath1 = path1.GetCorrespondingAssociationPath(assocSet);
671MemberPath assocEndPathA = path0.Extent is AssociationSet ? path0 : path1;
672MemberPath entityPath = path0.Extent is EntitySet ? path0 : path1;
673MemberPath assocEndPathB = entityPath.GetCorrespondingAssociationPath(assocSet);
695private static bool AreAssocationEndPathsEquivalentViaRefConstraint(MemberPath assocPath0,
696MemberPath assocPath1,
750private MemberPath GetCorrespondingAssociationPath(AssociationSet assocSet)
767MemberPath result = new MemberPath(assocSet, newMembers);
846private sealed class Comparer : IEqualityComparer<MemberPath>
848public bool Equals(MemberPath left, MemberPath right)
878public int GetHashCode(MemberPath key)
System\Data\Mapping\ViewGeneration\Structures\MemberProjectedSlot.cs (16)
31internal MemberProjectedSlot(MemberPath node)
38private readonly MemberPath m_memberPath;
45internal MemberPath MemberPath
52internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias, int indentLevel)
70internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
87private bool NeedToCastCqlValue(MemberPath outputMember, out TypeUsage outputMemberTypeUsage)
112return MemberPath.EqualityComparer.Equals(m_memberPath, rightSlot.m_memberPath);
117return MemberPath.EqualityComparer.GetHashCode(m_memberPath);
123internal MemberProjectedSlot RemapSlot(Dictionary<MemberPath, MemberPath> remap)
125MemberPath remappedNode = null;
143internal static List<MemberProjectedSlot> GetKeySlots(IEnumerable<MemberProjectedSlot> slots, MemberPath prefix)
161internal static List<MemberProjectedSlot> GetSlots(IEnumerable<MemberProjectedSlot> slots, IEnumerable<MemberPath> members)
164foreach (MemberPath member in members)
179internal static MemberProjectedSlot GetSlotForMember(IEnumerable<ProjectedSlot> slots, MemberPath member)
183if (MemberPath.EqualityComparer.Equals(slot.MemberPath, member))
System\Data\Mapping\ViewGeneration\Structures\MemberProjectionIndex.cs (20)
21/// Manages <see cref="MemberPath"/>s of the members of the types stored in an extent.
22/// This is a bi-directional dictionary of <see cref="MemberPath"/>s to integer indexes and back.
27private readonly Dictionary<MemberPath, int> m_indexMap;
28private readonly List<MemberPath> m_members;
33/// Recursively generates <see cref="MemberPath"/>s for the members of the types stored in the <paramref name="extent"/>.
48m_indexMap = new Dictionary<MemberPath, int>(MemberPath.EqualityComparer);
49m_members = new List<MemberPath>();
59internal MemberPath this[int index]
88internal IEnumerable<MemberPath> Members
98internal int IndexOf(MemberPath member)
114internal int CreateIndex(MemberPath member)
130internal MemberPath GetMemberPath(int slotNum, int numBoolSlots)
132MemberPath result = this.IsBoolSlot(slotNum, numBoolSlots) ? null : this[slotNum];
183/// Starting at the <paramref name="member"/>, recursively generates <see cref="MemberPath"/>s for the fields embedded in it.
187private static void GatherPartialSignature(MemberProjectionIndex index, EdmItemCollection edmItemCollection, MemberPath member, bool needKeysOnly)
221/// for this <paramref name="possibleType"/> and return a <see cref="MemberPath"/> signature corresponding to the <paramref name="possibleType"/> and the attributes.
227MemberPath member,
238MemberPath nonStructuredMember = new MemberPath(member, structuralMember);
251MemberPath structuredMember = new MemberPath(member, structuralMember);
System\Data\Mapping\ViewGeneration\Structures\NegatedConstant.cs (7)
115internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias)
124internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
130internal StringBuilder AsEsql(StringBuilder builder, string blockAlias, IEnumerable<Constant> constants, MemberPath outputMember, bool skipIsNotNull)
135internal DbExpression AsCqt(DbExpression row, IEnumerable<Constant> constants, MemberPath outputMember, bool skipIsNotNull)
162internal StringBuilder AsUserString(StringBuilder builder, string blockAlias, IEnumerable<Constant> constants, MemberPath outputMember, bool skipIsNotNull)
173private void AsCql(Action trueLiteral, Action varIsNotNull, Action<Constant> varNotEqualsTo, IEnumerable<Constant> constants, MemberPath outputMember, bool skipIsNotNull)
210private StringBuilder ToStringHelper(StringBuilder builder, string blockAlias, IEnumerable<Constant> constants, MemberPath outputMember, bool skipIsNotNull, bool userString)
System\Data\Mapping\ViewGeneration\Validation\ErrorPatternMatcher.cs (27)
23using CompositeCondition = Dictionary<MemberPath, Set<Constant>>;
31private IEnumerable<MemberPath> m_keyAttributes;
42m_keyAttributes = MemberPath.GetKeyMembers(context.Extent, domainMap);
121private static bool HasNotNullCondition(CellQuery cellQuery, MemberPath member)
145private static bool IsMemberPartOfNotNullCondition(IEnumerable<LeftCellWrapper> wrappers, MemberPath leftMember, ViewTarget viewTarget)
164MemberPath rightmember = ((MemberProjectedSlot)rightCellQuery.ProjectedSlotAt(indexOfMemberInProjection)).MemberPath;
186Set<MemberPath> mappedConditionMembers = new Set<MemberPath>();
200MemberPath memberPath = condition.RestrictedMemberSlot.MemberPath;
227MemberPath rightMemberPath = GetRightMemberPath(memberPath, leftCellWrapper);
266BuildCommaSeparatedErrorString<MemberPath>(condMembersValues.Keys)
283private MemberPath GetRightMemberPath(MemberPath conditionMember,LeftCellWrapper leftCellWrapper)
637private void CheckThatConditionMemberIsNotMapped(MemberPath conditionMember, List<LeftCellWrapper> mappingFragments, Set<MemberPath> mappedConditionMembers)
780class ConditionComparer : IEqualityComparer<Dictionary<MemberPath, Set<Constant>>>
782public bool Equals(Dictionary<MemberPath, Set<Constant>> one, Dictionary<MemberPath, Set<Constant>> two)
784Set<MemberPath> keysOfOne = new Set<MemberPath>(one.Keys, MemberPath.EqualityComparer);
785Set<MemberPath> keysOfTwo = new Set<MemberPath>(two.Keys, MemberPath.EqualityComparer);
792foreach (var member in keysOfOne)
805public int GetHashCode(Dictionary<MemberPath, Set<Constant>> obj)
808foreach (var key in obj.Keys)
System\Data\Mapping\ViewGeneration\Validation\ForeignConstraint.cs (28)
39m_childColumns = new List<MemberPath>();
43MemberPath path = new MemberPath(m_childTable, property);
47m_parentColumns = new List<MemberPath>();
50MemberPath path = new MemberPath(m_parentTable, property);
60private List<MemberPath> m_parentColumns;
61private List<MemberPath> m_childColumns;
75internal IEnumerable<MemberPath> ChildColumns
80internal IEnumerable<MemberPath> ParentColumns
263MemberPath prefix = new MemberPath(ChildTable);
265IEnumerable<MemberPath> primaryKeyFields = primaryKey.KeyFields;
472if (MemberPath.AreAllMembersNullable(ChildColumns) == false && parentEnd.RelationshipMultiplicity != RelationshipMultiplicity.One)
530private static EntitySet FindEntitySetForColumnsMappedToEntityKeys(IEnumerable<Cell> cells, IEnumerable<MemberPath> tableColumns)
570private static AssociationEndMember GetRelationEndForColumns(Cell cell, IEnumerable<MemberPath> columns)
584MemberPath prefix = new MemberPath(relationSet, endMember);
680List<MemberPath> childPaths = null;
681List<MemberPath> parentPaths = null;
689childPaths = new List<MemberPath>(childSlotNums.Count);
713parentPaths = new List<MemberPath>(parentSlotNums.Count);
732MemberPath parentPath = parentPaths[i];
733MemberPath childPath = childPaths[i];
774MemberPath.PropertiesToUserString(ChildColumns, false),
776MemberPath.PropertiesToUserString(childPaths, false),
778MemberPath.PropertiesToUserString(ParentColumns, false),
780MemberPath.PropertiesToUserString(parentPaths, false),
792private static List<List<int>> GetSlotNumsForColumns(Cell cell, IEnumerable<MemberPath> columns)
832foreach (MemberPath foreignKeyMember in m_childColumns)
875string childColsString = MemberPath.PropertiesToUserString(m_childColumns, false);
876string parentColsString = MemberPath.PropertiesToUserString(m_parentColumns, false);