Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Objects / SpanIndex.cs / 1 / 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. //---------------------------------------------------------------------- // // 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
- QuaternionIndependentAnimationStorage.cs
- FragmentQueryProcessor.cs
- sortedlist.cs
- DataSourceSelectArguments.cs
- MetadataPropertyAttribute.cs
- DynamicValidatorEventArgs.cs
- ButtonColumn.cs
- MouseActionConverter.cs
- QilXmlWriter.cs
- ipaddressinformationcollection.cs
- HelpKeywordAttribute.cs
- MetadataProperty.cs
- WindowShowOrOpenTracker.cs
- IdentityReference.cs
- RestHandler.cs
- DataControlImageButton.cs
- SelectionRange.cs
- QilXmlReader.cs
- BinaryMethodMessage.cs
- FixedTextView.cs
- ProcessModuleCollection.cs
- OpacityConverter.cs
- RowTypeElement.cs
- _NegoState.cs
- TempEnvironment.cs
- ClaimTypes.cs
- FieldTemplateUserControl.cs
- LoadedOrUnloadedOperation.cs
- PkcsUtils.cs
- UmAlQuraCalendar.cs
- AndCondition.cs
- SubqueryRules.cs
- Track.cs
- XmlSequenceWriter.cs
- CollectionViewGroupInternal.cs
- PropertyGeneratedEventArgs.cs
- XmlDictionaryString.cs
- ConfigurationLockCollection.cs
- DataBoundControlDesigner.cs
- DataGridViewComboBoxColumn.cs
- HttpCapabilitiesBase.cs
- TrustSection.cs
- ACL.cs
- DeclarativeCatalogPart.cs
- ZipIOLocalFileDataDescriptor.cs
- SoapServerMethod.cs
- CharacterShapingProperties.cs
- AuthenticationConfig.cs
- ClientData.cs
- LineGeometry.cs
- MappingException.cs
- Timer.cs
- sqlinternaltransaction.cs
- WS2007HttpBindingElement.cs
- JoinCqlBlock.cs
- SafeIUnknown.cs
- UriTemplateClientFormatter.cs
- CompilationLock.cs
- ExceptionHandlers.cs
- CaseCqlBlock.cs
- WebPartCloseVerb.cs
- KeyGesture.cs
- EpmTargetPathSegment.cs
- Crc32Helper.cs
- DataColumnMapping.cs
- CapabilitiesRule.cs
- DbgUtil.cs
- InvalidPrinterException.cs
- FieldNameLookup.cs
- Validator.cs
- ServiceBuildProvider.cs
- InputLanguageSource.cs
- GeneralTransformCollection.cs
- FrameworkContentElementAutomationPeer.cs
- XmlBindingWorker.cs
- ResXResourceReader.cs
- TypedReference.cs
- PictureBox.cs
- SystemColors.cs
- HtmlListAdapter.cs
- DataServices.cs
- HttpHandlersSection.cs
- MetadataException.cs
- XmlWriterTraceListener.cs
- HorizontalAlignConverter.cs
- TemplateControlBuildProvider.cs
- ScrollItemPattern.cs
- EventManager.cs
- SqlExpressionNullability.cs
- XmlExtensionFunction.cs
- InputReferenceExpression.cs
- MarshalDirectiveException.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- ObjectStateEntryDbDataRecord.cs
- KeyEvent.cs
- GeometryCollection.cs
- SQLInt64.cs
- NativeMethods.cs
- RegexStringValidatorAttribute.cs
- SmtpException.cs