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
- BrowserTree.cs
- NavigatingCancelEventArgs.cs
- SolidBrush.cs
- ValidationErrorCollection.cs
- SecurityRuntime.cs
- WSDualHttpSecurityElement.cs
- DynamicDocumentPaginator.cs
- InvalidDocumentContentsException.cs
- ExpandableObjectConverter.cs
- OracleConnectionFactory.cs
- DataGridViewBand.cs
- FullTextLine.cs
- webbrowsersite.cs
- serverconfig.cs
- CodeDefaultValueExpression.cs
- MessagePropertyFilter.cs
- WizardForm.cs
- KeyboardDevice.cs
- TextTreeRootNode.cs
- DirectoryRedirect.cs
- ProxyWebPart.cs
- FixUp.cs
- AmbientLight.cs
- NullReferenceException.cs
- relpropertyhelper.cs
- WebControlAdapter.cs
- SecurityTokenSerializer.cs
- backend.cs
- NativeMethods.cs
- UpdatePanel.cs
- ClientUtils.cs
- FormConverter.cs
- ExclusiveHandle.cs
- InternalCache.cs
- Sql8ExpressionRewriter.cs
- PageHandlerFactory.cs
- DataPointer.cs
- EndOfStreamException.cs
- ListSourceHelper.cs
- XmlDataCollection.cs
- UnicodeEncoding.cs
- OleDbStruct.cs
- ReadWriteSpinLock.cs
- DesignerAttribute.cs
- QuaternionRotation3D.cs
- UInt32Converter.cs
- Wildcard.cs
- PageTheme.cs
- RawStylusInputReport.cs
- BufferedWebEventProvider.cs
- SapiRecognizer.cs
- DeclaredTypeValidatorAttribute.cs
- DataGridViewCellConverter.cs
- WorkflowInstanceSuspendedRecord.cs
- Int32EqualityComparer.cs
- GridViewColumn.cs
- UIElement3DAutomationPeer.cs
- SqlFormatter.cs
- SafeNativeMethods.cs
- ClientData.cs
- ExtensionQuery.cs
- ModelTreeEnumerator.cs
- ProtectedProviderSettings.cs
- InternalsVisibleToAttribute.cs
- ConfigXmlWhitespace.cs
- SynchronizedMessageSource.cs
- DynamicDataRouteHandler.cs
- EncoderBestFitFallback.cs
- ExtendedPropertyCollection.cs
- TimeSpanStorage.cs
- EventDescriptor.cs
- CodeDirectoryCompiler.cs
- CompletedAsyncResult.cs
- XmlPreloadedResolver.cs
- QueryResponse.cs
- XamlPointCollectionSerializer.cs
- AnimatedTypeHelpers.cs
- ParseChildrenAsPropertiesAttribute.cs
- FixedBufferAttribute.cs
- XsdDuration.cs
- RelationshipEnd.cs
- AsyncInvokeContext.cs
- StorageEntitySetMapping.cs
- AmbientProperties.cs
- NeutralResourcesLanguageAttribute.cs
- PermissionAttributes.cs
- SecurityDescriptor.cs
- TreeNodeBinding.cs
- PathSegmentCollection.cs
- MetadataHelper.cs
- MetadataArtifactLoaderCompositeResource.cs
- CodeSnippetStatement.cs
- XDRSchema.cs
- SessionStateItemCollection.cs
- ClientData.cs
- ExtensionDataObject.cs
- CodeExpressionStatement.cs
- BufferedGraphicsContext.cs
- MetadataItem.cs
- Matrix.cs