Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Structures / LeafCellTreeNode.cs / 2 / LeafCellTreeNode.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Data.Common.Utils; using System.Data.Mapping.ViewGeneration.CqlGeneration; using System.Data.Mapping.ViewGeneration.QueryRewriting; using System.Linq; using System.Text; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration.Structures { // This class represents the nodes that reside at the leaves of the tree internal class LeafCellTreeNode : CellTreeNode { #region Constructor // effects: Encapsulate the cell wrapper in the node internal LeafCellTreeNode(CellNormalizer normalizer, LeftCellWrapper cellWrapper) : base(normalizer) { m_cellWrapper = cellWrapper; m_leftFragmentQuery = cellWrapper.FragmentQuery; cellWrapper.AssertHasUniqueCell(); m_rightFragmentQuery = FragmentQuery.Create( cellWrapper.OriginalCellNumberString, cellWrapper.CreateRoleBoolean(), cellWrapper.RightCellQuery); } internal LeafCellTreeNode(CellNormalizer normalizer, LeftCellWrapper cellWrapper, FragmentQuery rightFragmentQuery) : base(normalizer) { m_cellWrapper = cellWrapper; m_leftFragmentQuery = cellWrapper.FragmentQuery; m_rightFragmentQuery = rightFragmentQuery; } #endregion #region Fields internal static readonly IEqualityComparerEqualityComparer = new LeafCellTreeNodeComparer(); // The cell at the leaf level private LeftCellWrapper m_cellWrapper; private FragmentQuery m_leftFragmentQuery; private FragmentQuery m_rightFragmentQuery; #endregion #region Properties internal LeftCellWrapper LeftCellWrapper { get { return m_cellWrapper;} } internal override MemberDomainMap RightDomainMap { get { return m_cellWrapper.RightDomainMap; } } // effects: Returns the cell query denoting the right side internal CellQuery RightCellQuery { get { return m_cellWrapper.RightCellQuery; } } // effects: See CellTreeNode.FragmentQuery internal override FragmentQuery LeftFragmentQuery { get { return m_cellWrapper.FragmentQuery; } } internal override FragmentQuery RightFragmentQuery { get { Debug.Assert(m_rightFragmentQuery != null, "Unassigned right fragment query"); return m_rightFragmentQuery; } } // effects: See CellTreeNode.Attributes internal override Set Attributes { get { return m_cellWrapper.Attributes; } } // effects: See CellTreeNode.Children internal override List Children { get { return new List (); } } // effects: See CellTreeNode.OpType internal override CellTreeOpType OpType { get { return CellTreeOpType.Leaf; } } internal override int NumProjectedSlots { get { return RightCellQuery.NumProjectedSlots; } } internal override int NumBoolSlots { get { return RightCellQuery.NumBoolVars; } } #endregion #region Methods internal override TOutput Accept (CellTreeVisitor visitor, TInput param) { return visitor.VisitLeaf(this, param); } internal override TOutput Accept (SimpleCellTreeVisitor visitor, TInput param) { return visitor.VisitLeaf(this, param); } internal override bool IsProjectedSlot(int slot) { CellQuery cellQuery = RightCellQuery; if (IsBoolSlot(slot)) { return cellQuery.GetBoolVar(SlotToBoolIndex(slot)) != null; } else { return cellQuery.ProjectedSlotAt(slot) != null; } } #endregion #region Leaf CqlBlock Methods internal override CqlBlock ToCqlBlock(bool[] requiredSlots, CqlIdentifiers identifiers, ref int blockAliasNum, ref List withStatements) { // Get the projected slots and the boolean expressions int totalSlots = requiredSlots.Length; CellQuery cellQuery = RightCellQuery; SlotInfo[] projectedSlots = new SlotInfo[totalSlots]; Debug.Assert(cellQuery.NumProjectedSlots + cellQuery.NumBoolVars == totalSlots, "Wrong number of projected slots in node"); Debug.Assert(cellQuery.NumProjectedSlots == ProjectedSlotMap.Count, "Different number of slots in cell query and what we have mappings for"); // Add the regular fields for (int i = 0; i < cellQuery.NumProjectedSlots; i++) { ProjectedSlot slot = cellQuery.ProjectedSlotAt(i); // If the slot is not null, we will project it // For extents, we say that all requiredlots are the only the // ones that are CLR non-null. Recall that "real" nulls are // handled by having a CellConstant.Null in ConstantSlot if (requiredSlots[i] && slot == null) { ConstantSlot defaultValue = new ConstantSlot(CellConstantDomain.GetDefaultValueForMemberPath(ProjectedSlotMap[i], GetLeaves(), CellNormalizer.Config)); cellQuery.FixMissingSlotAsDefaultConstant(i, defaultValue); slot = defaultValue; } SlotInfo slotInfo = new SlotInfo(requiredSlots[i], slot != null, slot, ProjectedSlotMap[i]); projectedSlots[i] = slotInfo; } // Add the boolean fields for (int boolNum = 0; boolNum < cellQuery.NumBoolVars; boolNum++) { BoolExpression expr = cellQuery.GetBoolVar(boolNum); BooleanProjectedSlot boolSlot; if (expr != null) { boolSlot = new BooleanProjectedSlot(expr, identifiers, boolNum); } else { boolSlot = new BooleanProjectedSlot(BoolExpression.False, identifiers, boolNum); } int slotIndex = BoolIndexToSlot(boolNum); SlotInfo slotInfo = new SlotInfo(requiredSlots[slotIndex], expr != null, boolSlot, null); projectedSlots[slotIndex] = slotInfo; } //See if we are generating a query view and whether there are any colocated foreign keys for which //we have to add With statements IEnumerable totalProjectedSlots = projectedSlots; if ( (cellQuery.Extent.EntityContainer.DataSpace == DataSpace.SSpace) && (this.m_cellWrapper.LeftExtent.BuiltInTypeKind == BuiltInTypeKind.EntitySet)) { IEnumerable associationSetMaps = this.CellNormalizer.EntityContainerMapping.GetRelationshipSetMappingsFor(this.m_cellWrapper.LeftExtent, cellQuery.Extent); List foreignKeySlots = new List (); foreach (StorageAssociationSetMapping colocatedAssociationSetMap in associationSetMaps) { WithStatement withStatement; if (TryGetWithStatement(colocatedAssociationSetMap, this.m_cellWrapper.LeftExtent, cellQuery.JoinTreeRoot, ref foreignKeySlots, out withStatement)) { withStatements.Add(withStatement); totalProjectedSlots = projectedSlots.Concat(foreignKeySlots); } } } ExtentCqlBlock result = new ExtentCqlBlock(cellQuery.Extent, totalProjectedSlots.ToArray(), cellQuery.WhereClause, identifiers, ++blockAliasNum); return result; } private bool TryGetWithStatement(StorageAssociationSetMapping colocatedAssociationSetMap, EntitySetBase thisExtent, JoinTreeNode sRootNode, ref List foreignKeySlots, out WithStatement withStatement) { Debug.Assert(foreignKeySlots != null); withStatement = null; //Get the map for foreign key end StorageEndPropertyMapping foreignKeyEndMap = GetForeignKeyEndMapFromAssocitionMap(colocatedAssociationSetMap, thisExtent); if ( (foreignKeyEndMap == null) || (foreignKeyEndMap.EndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many) ) { return false; } //Collect the member paths for edm scalar properties that are part of the end mapping //These will be used as part of With Statement List associationEndMemberPaths = new List (); //Get the member path for AssociationSet AssociationSet associationSet = (AssociationSet)colocatedAssociationSetMap.Set; MemberPath prefix = new MemberPath(associationSet, foreignKeyEndMap.EndMember, this.CellNormalizer.Workspace); //Get the key properties from edm type since the query parser depends on the order of key members EntityTypeBase edmEntityType = ((RefType)(foreignKeyEndMap.EndMember.TypeUsage.EdmType)).ElementType; IEnumerable propertyMaps = foreignKeyEndMap.Properties.Cast (); foreach (EdmProperty edmProperty in edmEntityType.KeyMembers) { IEnumerable scalarPropertyMaps = propertyMaps.Where(propMap => (propMap.EdmProperty.Equals(edmProperty))); Debug.Assert(scalarPropertyMaps.Count() == 1, "Can't Map the same column multiple times in the same end"); StorageScalarPropertyMapping scalarPropertyMap = scalarPropertyMaps.First(); //Create SlotInfo for Freign Key member that needs to be projected JoinTreeSlot sSlot = new JoinTreeSlot(sRootNode.CreateAttributeNode(scalarPropertyMap.ColumnProperty)); MemberPath endMemberKeyPath = new MemberPath(prefix, edmProperty); associationEndMemberPaths.Add(endMemberKeyPath); foreignKeySlots.Add(new SlotInfo(true, true, sSlot, endMemberKeyPath)); } //Now create the With Statement with all the needed info like ToEntitySet, AssociationSet, FromRoleName, ToRoleName EntitySet refEntitySet = MetadataHelper.GetEntitySetAtEnd(associationSet, (AssociationEndMember)(foreignKeyEndMap.EndMember)); AssociationEndMember fromEnd = MetadataHelper.GetOtherAssociationEnd((AssociationEndMember)(foreignKeyEndMap.EndMember)); EntityType endEntityType = (EntityType)(((RefType)foreignKeyEndMap.EndMember.TypeUsage.EdmType).ElementType); EntityType fromEndEntityType = (EntityType)(((RefType)fromEnd.TypeUsage.EdmType).ElementType); withStatement = new WithStatement(refEntitySet, endEntityType, fromEndEntityType,associationSet, fromEnd.Name, foreignKeyEndMap.EndMember.Name, associationEndMemberPaths); return true; } //Gets the end that is not mapped to the primary key of the table private StorageEndPropertyMapping GetForeignKeyEndMapFromAssocitionMap(StorageAssociationSetMapping colocatedAssociationSetMap, EntitySetBase thisExtent) { StorageMappingFragment mapFragment = colocatedAssociationSetMap.TypeMappings.First().MappingFragments.First(); EntitySet storeEntitySet = (EntitySet)(colocatedAssociationSetMap.StoreEntitySet); IEnumerable keyProperties = storeEntitySet.ElementType.KeyMembers; //Find the end that's mapped to primary key foreach (StorageEndPropertyMapping endMap in mapFragment.Properties) { IEnumerable endStoreMembers = endMap.StoreProperties; if (endStoreMembers.SequenceEqual(keyProperties, EqualityComparer .Default)) { //Return the map for the other end since that is the foreign key end IEnumerable otherEnds = mapFragment.Properties.OfType ().Where(eMap => (!eMap.Equals(endMap))); Debug.Assert(otherEnds.Count() == 1); return otherEnds.First(); } } //This is probably defensive, but there should be no problem in falling back on the //AssociationSetMap if colocated foreign key is not found for some reason. return null; } #endregion #region String Methods // effects: See CellTreeNode.ToString internal override void ToCompactString(StringBuilder stringBuilder) { m_cellWrapper.ToCompactString(stringBuilder); } #endregion #region IEqualityComparer // A comparer that equates leaf nodes if the wrapper is the same private class LeafCellTreeNodeComparer : IEqualityComparer { public bool Equals(LeafCellTreeNode left, LeafCellTreeNode right) { // Quick check with references if (object.ReferenceEquals(left, right)) { // Gets the Null and Undefined case as well return true; } // One of them is non-null at least if (left == null || right == null) { return false; } // Both are non-null at this point return left.m_cellWrapper.Equals(right.m_cellWrapper); } public int GetHashCode(LeafCellTreeNode node) { return node.m_cellWrapper.GetHashCode(); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Data.Common.Utils; using System.Data.Mapping.ViewGeneration.CqlGeneration; using System.Data.Mapping.ViewGeneration.QueryRewriting; using System.Linq; using System.Text; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration.Structures { // This class represents the nodes that reside at the leaves of the tree internal class LeafCellTreeNode : CellTreeNode { #region Constructor // effects: Encapsulate the cell wrapper in the node internal LeafCellTreeNode(CellNormalizer normalizer, LeftCellWrapper cellWrapper) : base(normalizer) { m_cellWrapper = cellWrapper; m_leftFragmentQuery = cellWrapper.FragmentQuery; cellWrapper.AssertHasUniqueCell(); m_rightFragmentQuery = FragmentQuery.Create( cellWrapper.OriginalCellNumberString, cellWrapper.CreateRoleBoolean(), cellWrapper.RightCellQuery); } internal LeafCellTreeNode(CellNormalizer normalizer, LeftCellWrapper cellWrapper, FragmentQuery rightFragmentQuery) : base(normalizer) { m_cellWrapper = cellWrapper; m_leftFragmentQuery = cellWrapper.FragmentQuery; m_rightFragmentQuery = rightFragmentQuery; } #endregion #region Fields internal static readonly IEqualityComparerEqualityComparer = new LeafCellTreeNodeComparer(); // The cell at the leaf level private LeftCellWrapper m_cellWrapper; private FragmentQuery m_leftFragmentQuery; private FragmentQuery m_rightFragmentQuery; #endregion #region Properties internal LeftCellWrapper LeftCellWrapper { get { return m_cellWrapper;} } internal override MemberDomainMap RightDomainMap { get { return m_cellWrapper.RightDomainMap; } } // effects: Returns the cell query denoting the right side internal CellQuery RightCellQuery { get { return m_cellWrapper.RightCellQuery; } } // effects: See CellTreeNode.FragmentQuery internal override FragmentQuery LeftFragmentQuery { get { return m_cellWrapper.FragmentQuery; } } internal override FragmentQuery RightFragmentQuery { get { Debug.Assert(m_rightFragmentQuery != null, "Unassigned right fragment query"); return m_rightFragmentQuery; } } // effects: See CellTreeNode.Attributes internal override Set Attributes { get { return m_cellWrapper.Attributes; } } // effects: See CellTreeNode.Children internal override List Children { get { return new List (); } } // effects: See CellTreeNode.OpType internal override CellTreeOpType OpType { get { return CellTreeOpType.Leaf; } } internal override int NumProjectedSlots { get { return RightCellQuery.NumProjectedSlots; } } internal override int NumBoolSlots { get { return RightCellQuery.NumBoolVars; } } #endregion #region Methods internal override TOutput Accept (CellTreeVisitor visitor, TInput param) { return visitor.VisitLeaf(this, param); } internal override TOutput Accept (SimpleCellTreeVisitor visitor, TInput param) { return visitor.VisitLeaf(this, param); } internal override bool IsProjectedSlot(int slot) { CellQuery cellQuery = RightCellQuery; if (IsBoolSlot(slot)) { return cellQuery.GetBoolVar(SlotToBoolIndex(slot)) != null; } else { return cellQuery.ProjectedSlotAt(slot) != null; } } #endregion #region Leaf CqlBlock Methods internal override CqlBlock ToCqlBlock(bool[] requiredSlots, CqlIdentifiers identifiers, ref int blockAliasNum, ref List withStatements) { // Get the projected slots and the boolean expressions int totalSlots = requiredSlots.Length; CellQuery cellQuery = RightCellQuery; SlotInfo[] projectedSlots = new SlotInfo[totalSlots]; Debug.Assert(cellQuery.NumProjectedSlots + cellQuery.NumBoolVars == totalSlots, "Wrong number of projected slots in node"); Debug.Assert(cellQuery.NumProjectedSlots == ProjectedSlotMap.Count, "Different number of slots in cell query and what we have mappings for"); // Add the regular fields for (int i = 0; i < cellQuery.NumProjectedSlots; i++) { ProjectedSlot slot = cellQuery.ProjectedSlotAt(i); // If the slot is not null, we will project it // For extents, we say that all requiredlots are the only the // ones that are CLR non-null. Recall that "real" nulls are // handled by having a CellConstant.Null in ConstantSlot if (requiredSlots[i] && slot == null) { ConstantSlot defaultValue = new ConstantSlot(CellConstantDomain.GetDefaultValueForMemberPath(ProjectedSlotMap[i], GetLeaves(), CellNormalizer.Config)); cellQuery.FixMissingSlotAsDefaultConstant(i, defaultValue); slot = defaultValue; } SlotInfo slotInfo = new SlotInfo(requiredSlots[i], slot != null, slot, ProjectedSlotMap[i]); projectedSlots[i] = slotInfo; } // Add the boolean fields for (int boolNum = 0; boolNum < cellQuery.NumBoolVars; boolNum++) { BoolExpression expr = cellQuery.GetBoolVar(boolNum); BooleanProjectedSlot boolSlot; if (expr != null) { boolSlot = new BooleanProjectedSlot(expr, identifiers, boolNum); } else { boolSlot = new BooleanProjectedSlot(BoolExpression.False, identifiers, boolNum); } int slotIndex = BoolIndexToSlot(boolNum); SlotInfo slotInfo = new SlotInfo(requiredSlots[slotIndex], expr != null, boolSlot, null); projectedSlots[slotIndex] = slotInfo; } //See if we are generating a query view and whether there are any colocated foreign keys for which //we have to add With statements IEnumerable totalProjectedSlots = projectedSlots; if ( (cellQuery.Extent.EntityContainer.DataSpace == DataSpace.SSpace) && (this.m_cellWrapper.LeftExtent.BuiltInTypeKind == BuiltInTypeKind.EntitySet)) { IEnumerable associationSetMaps = this.CellNormalizer.EntityContainerMapping.GetRelationshipSetMappingsFor(this.m_cellWrapper.LeftExtent, cellQuery.Extent); List foreignKeySlots = new List (); foreach (StorageAssociationSetMapping colocatedAssociationSetMap in associationSetMaps) { WithStatement withStatement; if (TryGetWithStatement(colocatedAssociationSetMap, this.m_cellWrapper.LeftExtent, cellQuery.JoinTreeRoot, ref foreignKeySlots, out withStatement)) { withStatements.Add(withStatement); totalProjectedSlots = projectedSlots.Concat(foreignKeySlots); } } } ExtentCqlBlock result = new ExtentCqlBlock(cellQuery.Extent, totalProjectedSlots.ToArray(), cellQuery.WhereClause, identifiers, ++blockAliasNum); return result; } private bool TryGetWithStatement(StorageAssociationSetMapping colocatedAssociationSetMap, EntitySetBase thisExtent, JoinTreeNode sRootNode, ref List foreignKeySlots, out WithStatement withStatement) { Debug.Assert(foreignKeySlots != null); withStatement = null; //Get the map for foreign key end StorageEndPropertyMapping foreignKeyEndMap = GetForeignKeyEndMapFromAssocitionMap(colocatedAssociationSetMap, thisExtent); if ( (foreignKeyEndMap == null) || (foreignKeyEndMap.EndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many) ) { return false; } //Collect the member paths for edm scalar properties that are part of the end mapping //These will be used as part of With Statement List associationEndMemberPaths = new List (); //Get the member path for AssociationSet AssociationSet associationSet = (AssociationSet)colocatedAssociationSetMap.Set; MemberPath prefix = new MemberPath(associationSet, foreignKeyEndMap.EndMember, this.CellNormalizer.Workspace); //Get the key properties from edm type since the query parser depends on the order of key members EntityTypeBase edmEntityType = ((RefType)(foreignKeyEndMap.EndMember.TypeUsage.EdmType)).ElementType; IEnumerable propertyMaps = foreignKeyEndMap.Properties.Cast (); foreach (EdmProperty edmProperty in edmEntityType.KeyMembers) { IEnumerable scalarPropertyMaps = propertyMaps.Where(propMap => (propMap.EdmProperty.Equals(edmProperty))); Debug.Assert(scalarPropertyMaps.Count() == 1, "Can't Map the same column multiple times in the same end"); StorageScalarPropertyMapping scalarPropertyMap = scalarPropertyMaps.First(); //Create SlotInfo for Freign Key member that needs to be projected JoinTreeSlot sSlot = new JoinTreeSlot(sRootNode.CreateAttributeNode(scalarPropertyMap.ColumnProperty)); MemberPath endMemberKeyPath = new MemberPath(prefix, edmProperty); associationEndMemberPaths.Add(endMemberKeyPath); foreignKeySlots.Add(new SlotInfo(true, true, sSlot, endMemberKeyPath)); } //Now create the With Statement with all the needed info like ToEntitySet, AssociationSet, FromRoleName, ToRoleName EntitySet refEntitySet = MetadataHelper.GetEntitySetAtEnd(associationSet, (AssociationEndMember)(foreignKeyEndMap.EndMember)); AssociationEndMember fromEnd = MetadataHelper.GetOtherAssociationEnd((AssociationEndMember)(foreignKeyEndMap.EndMember)); EntityType endEntityType = (EntityType)(((RefType)foreignKeyEndMap.EndMember.TypeUsage.EdmType).ElementType); EntityType fromEndEntityType = (EntityType)(((RefType)fromEnd.TypeUsage.EdmType).ElementType); withStatement = new WithStatement(refEntitySet, endEntityType, fromEndEntityType,associationSet, fromEnd.Name, foreignKeyEndMap.EndMember.Name, associationEndMemberPaths); return true; } //Gets the end that is not mapped to the primary key of the table private StorageEndPropertyMapping GetForeignKeyEndMapFromAssocitionMap(StorageAssociationSetMapping colocatedAssociationSetMap, EntitySetBase thisExtent) { StorageMappingFragment mapFragment = colocatedAssociationSetMap.TypeMappings.First().MappingFragments.First(); EntitySet storeEntitySet = (EntitySet)(colocatedAssociationSetMap.StoreEntitySet); IEnumerable keyProperties = storeEntitySet.ElementType.KeyMembers; //Find the end that's mapped to primary key foreach (StorageEndPropertyMapping endMap in mapFragment.Properties) { IEnumerable endStoreMembers = endMap.StoreProperties; if (endStoreMembers.SequenceEqual(keyProperties, EqualityComparer .Default)) { //Return the map for the other end since that is the foreign key end IEnumerable otherEnds = mapFragment.Properties.OfType ().Where(eMap => (!eMap.Equals(endMap))); Debug.Assert(otherEnds.Count() == 1); return otherEnds.First(); } } //This is probably defensive, but there should be no problem in falling back on the //AssociationSetMap if colocated foreign key is not found for some reason. return null; } #endregion #region String Methods // effects: See CellTreeNode.ToString internal override void ToCompactString(StringBuilder stringBuilder) { m_cellWrapper.ToCompactString(stringBuilder); } #endregion #region IEqualityComparer // A comparer that equates leaf nodes if the wrapper is the same private class LeafCellTreeNodeComparer : IEqualityComparer { public bool Equals(LeafCellTreeNode left, LeafCellTreeNode right) { // Quick check with references if (object.ReferenceEquals(left, right)) { // Gets the Null and Undefined case as well return true; } // One of them is non-null at least if (left == null || right == null) { return false; } // Both are non-null at this point return left.m_cellWrapper.Equals(right.m_cellWrapper); } public int GetHashCode(LeafCellTreeNode node) { return node.m_cellWrapper.GetHashCode(); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MachineSettingsSection.cs
- XmlStreamStore.cs
- RegexFCD.cs
- LazyTextWriterCreator.cs
- TableLayoutPanelCellPosition.cs
- BindingMAnagerBase.cs
- ByteAnimationUsingKeyFrames.cs
- EntityAdapter.cs
- UDPClient.cs
- FillRuleValidation.cs
- TransformationRules.cs
- WebPartCancelEventArgs.cs
- ViewKeyConstraint.cs
- TreeNodeConverter.cs
- OracleRowUpdatedEventArgs.cs
- BaseTypeViewSchema.cs
- Cast.cs
- RoleGroup.cs
- _PooledStream.cs
- XmlEntity.cs
- ExpressionEditorAttribute.cs
- TextEditorCharacters.cs
- BitConverter.cs
- CaseExpr.cs
- DynamicField.cs
- Range.cs
- ClientUrlResolverWrapper.cs
- Inline.cs
- Block.cs
- oledbmetadatacolumnnames.cs
- DbConnectionPoolIdentity.cs
- IdentityNotMappedException.cs
- ListItemConverter.cs
- TypedOperationInfo.cs
- Message.cs
- ScrollViewerAutomationPeer.cs
- XPathMultyIterator.cs
- HandlerMappingMemo.cs
- EntityChangedParams.cs
- BooleanConverter.cs
- CellTreeNode.cs
- QuaternionRotation3D.cs
- MenuItemStyleCollectionEditor.cs
- LineSegment.cs
- SafeEventLogReadHandle.cs
- DataControlImageButton.cs
- RelationshipEnd.cs
- SubqueryRules.cs
- ColorAnimationUsingKeyFrames.cs
- SelectedDatesCollection.cs
- PagesSection.cs
- ReadOnlyNameValueCollection.cs
- FileChangesMonitor.cs
- FileSecurity.cs
- ResourceType.cs
- CqlLexerHelpers.cs
- SystemDropShadowChrome.cs
- shaperfactory.cs
- PropertyMapper.cs
- ListItemConverter.cs
- DataViewManager.cs
- FamilyCollection.cs
- BinaryNode.cs
- BitStream.cs
- HtmlLiteralTextAdapter.cs
- ColorConvertedBitmapExtension.cs
- CompositeCollection.cs
- OletxEnlistment.cs
- MergeFailedEvent.cs
- SafeReadContext.cs
- ItemCheckEvent.cs
- SignalGate.cs
- ModifierKeysConverter.cs
- ConfigXmlElement.cs
- Transform.cs
- ThicknessKeyFrameCollection.cs
- sqlcontext.cs
- CodeTypeReferenceExpression.cs
- PriorityQueue.cs
- RedirectionProxy.cs
- CommandValueSerializer.cs
- XpsFont.cs
- Authorization.cs
- NopReturnReader.cs
- EventSourceCreationData.cs
- ObjectKeyFrameCollection.cs
- ExpandableObjectConverter.cs
- HashStream.cs
- RequestUriProcessor.cs
- ActionItem.cs
- StructuralComparisons.cs
- TextServicesCompartment.cs
- StackBuilderSink.cs
- TextTreeRootTextBlock.cs
- UrlPropertyAttribute.cs
- DigitShape.cs
- EventsTab.cs
- RuleAction.cs
- DataTemplate.cs
- SafeProcessHandle.cs