Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Objects / SpanIndex.cs / 2 / 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
- OdbcDataAdapter.cs
- MatchAttribute.cs
- HostedTransportConfigurationManager.cs
- BufferedReadStream.cs
- BaseProcessor.cs
- OdbcUtils.cs
- TerminatorSinks.cs
- RemotingConfiguration.cs
- FieldAccessException.cs
- GacUtil.cs
- ReadOnlyDictionary.cs
- ConfigurationSectionCollection.cs
- ElapsedEventArgs.cs
- InputReport.cs
- DocumentXPathNavigator.cs
- CommonGetThemePartSize.cs
- ContainerUIElement3D.cs
- XmlQualifiedNameTest.cs
- WorkflowExecutor.cs
- TagPrefixCollection.cs
- ConnectionStringsExpressionBuilder.cs
- ISCIIEncoding.cs
- SupportsEventValidationAttribute.cs
- DataControlFieldCell.cs
- ObjectItemAttributeAssemblyLoader.cs
- TextDecoration.cs
- SizeAnimationUsingKeyFrames.cs
- DetailsViewUpdateEventArgs.cs
- WebPartRestoreVerb.cs
- GridLengthConverter.cs
- OleDbParameter.cs
- MultiTrigger.cs
- clipboard.cs
- ArglessEventHandlerProxy.cs
- ActiveXHelper.cs
- ThicknessAnimationBase.cs
- ContextBase.cs
- Convert.cs
- FixedTextContainer.cs
- EventDriven.cs
- ApplicationInterop.cs
- SqlTypeConverter.cs
- storepermission.cs
- ReflectionServiceProvider.cs
- SHA512.cs
- SharedStatics.cs
- XmlSerializationGeneratedCode.cs
- OracleRowUpdatedEventArgs.cs
- SessionStateUtil.cs
- ProfessionalColors.cs
- TemplateBaseAction.cs
- TcpChannelHelper.cs
- LogLogRecordHeader.cs
- ExceptionNotification.cs
- StyleModeStack.cs
- TypeSystemProvider.cs
- RegexRunnerFactory.cs
- WindowsScrollBar.cs
- PageStatePersister.cs
- CompiledXpathExpr.cs
- EntityConnection.cs
- TreeNodeStyleCollection.cs
- ObjectDataSourceMethodEditor.cs
- GraphicsState.cs
- GridViewColumnHeader.cs
- SqlError.cs
- EndPoint.cs
- MoveSizeWinEventHandler.cs
- SizeAnimationUsingKeyFrames.cs
- ValidationUtility.cs
- PkcsUtils.cs
- FormsAuthenticationEventArgs.cs
- InlineObject.cs
- InfoCardMetadataExchangeClient.cs
- ShaderRenderModeValidation.cs
- SwitchElementsCollection.cs
- AQNBuilder.cs
- ApplicationFileParser.cs
- MulticastDelegate.cs
- IsolatedStoragePermission.cs
- LockCookie.cs
- EncryptedXml.cs
- ExtensionWindow.cs
- IndexingContentUnit.cs
- EntryPointNotFoundException.cs
- OdbcInfoMessageEvent.cs
- FormViewDeletedEventArgs.cs
- ConversionHelper.cs
- GradientSpreadMethodValidation.cs
- UpdateDelegates.Generated.cs
- ConnectionManager.cs
- ChineseLunisolarCalendar.cs
- coordinator.cs
- WebPartsPersonalization.cs
- TextServicesCompartment.cs
- MobileControlsSectionHelper.cs
- EntityDataSourceDataSelection.cs
- StringSorter.cs
- SignedPkcs7.cs
- TableLayout.cs