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 / Common / internal / materialization / util.cs / 1 / util.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Data.Metadata.Edm; using System.Data.Mapping; namespace System.Data.Common.Internal.Materialization { static class Util { ////// Retrieves a mapping to CLR type for the given EDM type. Assumes the MetadataWorkspace has no /// internal static ObjectTypeMapping GetObjectMapping(EdmType type, MetadataWorkspace workspace) { // Check if the workspace has cspace item collection registered with it. If not, then its a case // of public materializer trying to create objects from PODR or EntityDataReader with no context. ItemCollection collection; if (workspace.TryGetItemCollection(DataSpace.CSpace, out collection)) { return (ObjectTypeMapping)workspace.GetMap(type, DataSpace.OCSpace); } else { EdmType ospaceType; EdmType cspaceType; // If its a case of EntityDataReader with no context, the typeUsage which is passed in must contain // a cspace type. We need to look up an OSpace type in the ospace item collection and then create // ocMapping if (type.DataSpace == DataSpace.CSpace) { // if its a primitive type, then the names will be different for CSpace type and OSpace type if (Helper.IsPrimitiveType(type)) { ospaceType = workspace.GetMappedPrimitiveType(((PrimitiveType)type).PrimitiveTypeKind, DataSpace.OSpace); } else { // Metadata will throw if there is no item with this identity present. // Is this exception fine or does object materializer code wants to wrap and throw a new exception ospaceType = workspace.GetItem(type.FullName, DataSpace.OSpace); } cspaceType = type; } else { // In case of PODR, there is no cspace at all. We must create a fake ocmapping, with ospace types // on both the ends ospaceType = type; cspaceType = type; } // This condition must be hit only when someone is trying to materialize a legacy data reader and we // don't have the CSpace metadata. if (!Helper.IsPrimitiveType(ospaceType) && !Helper.IsEntityType(ospaceType) && !Helper.IsComplexType(ospaceType)) { throw EntityUtil.MaterializerUnsupportedType(); } ObjectTypeMapping typeMapping; if (Helper.IsPrimitiveType(ospaceType)) { typeMapping = new ObjectTypeMapping(ospaceType, cspaceType); } else { typeMapping = DefaultObjectMappingItemCollection.LoadObjectMapping(cspaceType, ospaceType, null); } return typeMapping; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Data.Metadata.Edm; using System.Data.Mapping; namespace System.Data.Common.Internal.Materialization { static class Util { ////// Retrieves a mapping to CLR type for the given EDM type. Assumes the MetadataWorkspace has no /// internal static ObjectTypeMapping GetObjectMapping(EdmType type, MetadataWorkspace workspace) { // Check if the workspace has cspace item collection registered with it. If not, then its a case // of public materializer trying to create objects from PODR or EntityDataReader with no context. ItemCollection collection; if (workspace.TryGetItemCollection(DataSpace.CSpace, out collection)) { return (ObjectTypeMapping)workspace.GetMap(type, DataSpace.OCSpace); } else { EdmType ospaceType; EdmType cspaceType; // If its a case of EntityDataReader with no context, the typeUsage which is passed in must contain // a cspace type. We need to look up an OSpace type in the ospace item collection and then create // ocMapping if (type.DataSpace == DataSpace.CSpace) { // if its a primitive type, then the names will be different for CSpace type and OSpace type if (Helper.IsPrimitiveType(type)) { ospaceType = workspace.GetMappedPrimitiveType(((PrimitiveType)type).PrimitiveTypeKind, DataSpace.OSpace); } else { // Metadata will throw if there is no item with this identity present. // Is this exception fine or does object materializer code wants to wrap and throw a new exception ospaceType = workspace.GetItem(type.FullName, DataSpace.OSpace); } cspaceType = type; } else { // In case of PODR, there is no cspace at all. We must create a fake ocmapping, with ospace types // on both the ends ospaceType = type; cspaceType = type; } // This condition must be hit only when someone is trying to materialize a legacy data reader and we // don't have the CSpace metadata. if (!Helper.IsPrimitiveType(ospaceType) && !Helper.IsEntityType(ospaceType) && !Helper.IsComplexType(ospaceType)) { throw EntityUtil.MaterializerUnsupportedType(); } ObjectTypeMapping typeMapping; if (Helper.IsPrimitiveType(ospaceType)) { typeMapping = new ObjectTypeMapping(ospaceType, cspaceType); } else { typeMapping = DefaultObjectMappingItemCollection.LoadObjectMapping(cspaceType, ospaceType, null); } return typeMapping; } } } } // 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
- Variable.cs
- SafeHandles.cs
- AnimatedTypeHelpers.cs
- WorkflowItemPresenter.cs
- DataGridTablesFactory.cs
- ExplicitDiscriminatorMap.cs
- FileSecurity.cs
- ListSortDescription.cs
- CommandHelper.cs
- ContentElementAutomationPeer.cs
- GlyphRun.cs
- CounterCreationDataCollection.cs
- RemoteWebConfigurationHostStream.cs
- GeometryDrawing.cs
- ICspAsymmetricAlgorithm.cs
- SafeThreadHandle.cs
- SelectionProcessor.cs
- ContextMenu.cs
- InfoCardRSACryptoProvider.cs
- IISUnsafeMethods.cs
- _ListenerAsyncResult.cs
- FixedSOMTableCell.cs
- LayoutTableCell.cs
- SuppressedPackageProperties.cs
- XmlDataSource.cs
- InputLanguageSource.cs
- NameValueConfigurationCollection.cs
- MobileControlDesigner.cs
- ConsumerConnectionPoint.cs
- Method.cs
- CompilationUtil.cs
- IncomingWebRequestContext.cs
- OverflowException.cs
- DecoderBestFitFallback.cs
- SiteOfOriginPart.cs
- DataGridPageChangedEventArgs.cs
- GB18030Encoding.cs
- SqlAggregateChecker.cs
- WindowsTreeView.cs
- DataFieldConverter.cs
- XPathNavigator.cs
- BinaryMethodMessage.cs
- DataKeyArray.cs
- DeploymentSectionCache.cs
- SessionStateContainer.cs
- indexingfiltermarshaler.cs
- TextFormatterHost.cs
- FixedSOMContainer.cs
- GridViewCommandEventArgs.cs
- AuthenticationService.cs
- DataListCommandEventArgs.cs
- Source.cs
- Authorization.cs
- CompiledXpathExpr.cs
- VirtualDirectoryMapping.cs
- GenerateHelper.cs
- PeerToPeerException.cs
- TrustSection.cs
- PropertyValueUIItem.cs
- Events.cs
- TreeViewCancelEvent.cs
- _Events.cs
- WriteFileContext.cs
- CompModSwitches.cs
- SafeThemeHandle.cs
- BlurEffect.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- ToolStripItemRenderEventArgs.cs
- WebPartRestoreVerb.cs
- StringConcat.cs
- wgx_exports.cs
- ValueSerializer.cs
- TextChange.cs
- WorkerRequest.cs
- ImageListStreamer.cs
- HttpModulesInstallComponent.cs
- TextWriterEngine.cs
- ScrollItemPatternIdentifiers.cs
- ResourceSet.cs
- EmbeddedMailObjectsCollection.cs
- MouseDevice.cs
- ReadOnlyDataSource.cs
- FieldMetadata.cs
- Point4DConverter.cs
- MasterPageCodeDomTreeGenerator.cs
- xsdvalidator.cs
- RecordsAffectedEventArgs.cs
- ProviderSettingsCollection.cs
- AnimationClock.cs
- ParameterElementCollection.cs
- SQlBooleanStorage.cs
- FtpCachePolicyElement.cs
- ClientUtils.cs
- Rect.cs
- ListMarkerSourceInfo.cs
- InvalidateEvent.cs
- EastAsianLunisolarCalendar.cs
- FontFamilyValueSerializer.cs
- documentation.cs
- DbDataSourceEnumerator.cs