Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / SpanIndex.cs / 1305376 / SpanIndex.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupowner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Diagnostics; using System.Data.Common; using System.Data.Common.Utils; using System.Data.Metadata.Edm; using System.Data.Common.CommandTrees; namespace System.Data.Objects.Internal { ////// An index containing information about how the query was spanned /// This helps to determine how to materialize the query result /// internal sealed class SpanIndex { #region Nested types ////// Helper class to compare two RowTypes using EdmEquals instead of reference equality. /// sealed private class RowTypeEqualityComparer : IEqualityComparer{ private RowTypeEqualityComparer() { } internal static readonly RowTypeEqualityComparer Instance = new RowTypeEqualityComparer(); #region IEqualityComparer Members public bool Equals(RowType x, RowType y) { if (x == null || y == null) { return false; } return x.EdmEquals(y); } public int GetHashCode(RowType obj) { return obj.Identity.GetHashCode(); } #endregion } #endregion // When a query is spanned, the result is always a RowType // The _spanMap index maps RowTypes that are a span result to a map between // column ordinal and end member metadata of the type that is spanned private Dictionary > _spanMap; // A map from a spanned RowType (or parent RowType) to the original TypeUsage prior // to the query being rewritten private Dictionary _rowMap; internal SpanIndex() { } internal void AddSpannedRowType(RowType spannedRowType, TypeUsage originalRowType) { Debug.Assert(spannedRowType != null, "Spanned RowType cannot be null"); Debug.Assert(originalRowType != null, "Original RowType cannot be null"); Debug.Assert(originalRowType.EdmType.BuiltInTypeKind == BuiltInTypeKind.RowType, "Original RowType must be a RowType"); if (null == _rowMap) { _rowMap = new Dictionary (RowTypeEqualityComparer.Instance); } _rowMap[spannedRowType] = originalRowType; } internal TypeUsage GetSpannedRowType(RowType spannedRowType) { TypeUsage retType; if (_rowMap != null && _rowMap.TryGetValue(spannedRowType, out retType)) { return retType; } return null; } internal bool HasSpanMap(RowType spanRowType) { Debug.Assert(spanRowType != null, "Span RowType cannot be null"); if (null == _spanMap) { return false; } return _spanMap.ContainsKey(spanRowType); } internal void AddSpanMap(RowType rowType, Dictionary columnMap) { Debug.Assert(rowType != null, "Span row type cannot be null"); Debug.Assert(columnMap != null, "Span column map cannot be null"); if (null == _spanMap) { _spanMap = new Dictionary >(RowTypeEqualityComparer.Instance); } _spanMap[rowType] = columnMap; } internal Dictionary GetSpanMap(RowType rowType) { Dictionary retMap = null; if (_spanMap != null && _spanMap.TryGetValue(rowType, out retMap)) { return retMap; } return null; } } } // 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
- SiteMapHierarchicalDataSourceView.cs
- ViewLoader.cs
- LayoutEditorPart.cs
- ServiceModelEnumValidator.cs
- ResolveInfo.cs
- PaintValueEventArgs.cs
- SafeViewOfFileHandle.cs
- PublisherMembershipCondition.cs
- BamlTreeMap.cs
- Rule.cs
- PixelFormat.cs
- StringValidatorAttribute.cs
- GPPOINTF.cs
- OSEnvironmentHelper.cs
- OdbcConnectionPoolProviderInfo.cs
- JoinTreeNode.cs
- DelegateSerializationHolder.cs
- FixedSOMLineCollection.cs
- EdmItemCollection.cs
- Function.cs
- DefaultAsyncDataDispatcher.cs
- XPathSelectionIterator.cs
- DbgCompiler.cs
- XmlNotation.cs
- SystemUdpStatistics.cs
- XmlSchemaSet.cs
- Keywords.cs
- ControlPropertyNameConverter.cs
- DistinctQueryOperator.cs
- PropertyRef.cs
- RootNamespaceAttribute.cs
- ExpressionHelper.cs
- loginstatus.cs
- StylusCollection.cs
- EventLogEntryCollection.cs
- DesignerDataView.cs
- FontStretchConverter.cs
- assertwrapper.cs
- RequestDescription.cs
- DummyDataSource.cs
- ValidatingPropertiesEventArgs.cs
- TrustLevelCollection.cs
- WorkflowHostingResponseContext.cs
- BuiltInExpr.cs
- StackBuilderSink.cs
- ClientTarget.cs
- AdjustableArrowCap.cs
- DesigntimeLicenseContextSerializer.cs
- TemplateManager.cs
- ToolStripMenuItemDesigner.cs
- DataGridAddNewRow.cs
- SecurityPolicySection.cs
- RenderingBiasValidation.cs
- DecimalStorage.cs
- TransformPatternIdentifiers.cs
- Tokenizer.cs
- RuleInfoComparer.cs
- GridToolTip.cs
- PathGeometry.cs
- CompModSwitches.cs
- TableLayoutSettings.cs
- TypeSystem.cs
- ServicePointManagerElement.cs
- EndpointConfigContainer.cs
- OleDbErrorCollection.cs
- XPathException.cs
- PersonalizationStateQuery.cs
- TypeElement.cs
- ConditionValidator.cs
- MimeFormImporter.cs
- WizardStepBase.cs
- TempEnvironment.cs
- SQLStringStorage.cs
- XmlAtomErrorReader.cs
- TraceInternal.cs
- ImageFormatConverter.cs
- SynchronizationScope.cs
- ExceptionHandler.cs
- DataControlCommands.cs
- Padding.cs
- StyleCollection.cs
- DataGridColumn.cs
- LineServices.cs
- CapacityStreamGeometryContext.cs
- NullableDecimalSumAggregationOperator.cs
- StringFunctions.cs
- MatrixCamera.cs
- TextTrailingWordEllipsis.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ImageConverter.cs
- StatusBarItemAutomationPeer.cs
- DrawingAttributesDefaultValueFactory.cs
- DocumentPaginator.cs
- WebPartsPersonalizationAuthorization.cs
- WindowsFormsHostPropertyMap.cs
- BooleanFacetDescriptionElement.cs
- UnsafeNativeMethods.cs
- Ray3DHitTestResult.cs
- EntitySetRetriever.cs
- MetafileHeaderEmf.cs