Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / internal / materialization / util.cs / 1305376 / 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
- FormsAuthenticationUser.cs
- clipboard.cs
- NameSpaceExtractor.cs
- ApplicationTrust.cs
- SqlServices.cs
- Adorner.cs
- DatePickerAutomationPeer.cs
- ProfileInfo.cs
- SystemIPInterfaceStatistics.cs
- Control.cs
- MatrixAnimationBase.cs
- ErrorStyle.cs
- DataGridViewImageColumn.cs
- SHA256.cs
- SettingsSection.cs
- Size3DConverter.cs
- PageBuildProvider.cs
- SchemaMapping.cs
- ResolveCompletedEventArgs.cs
- UmAlQuraCalendar.cs
- HelpInfo.cs
- ReadOnlyCollectionBase.cs
- SqlMethodTransformer.cs
- NextPreviousPagerField.cs
- PropertyEntry.cs
- ColorAnimationBase.cs
- FormsAuthenticationUserCollection.cs
- ImageUrlEditor.cs
- WebException.cs
- BoolExpressionVisitors.cs
- XmlName.cs
- SynchronizedChannelCollection.cs
- GlobalItem.cs
- WindowsRichEditRange.cs
- HGlobalSafeHandle.cs
- InvalidOleVariantTypeException.cs
- LinqDataSourceValidationException.cs
- TypefaceMetricsCache.cs
- OrderPreservingPipeliningMergeHelper.cs
- ListBox.cs
- CompatibleIComparer.cs
- XmlSchemaObject.cs
- RemotingService.cs
- ConnectionsZoneAutoFormat.cs
- TimelineGroup.cs
- DiagnosticsElement.cs
- Win32Exception.cs
- CodeObjectCreateExpression.cs
- DataObjectSettingDataEventArgs.cs
- PassportAuthenticationEventArgs.cs
- BaseResourcesBuildProvider.cs
- StringWriter.cs
- Link.cs
- ACE.cs
- SoapAttributes.cs
- UdpSocket.cs
- AttachedPropertyMethodSelector.cs
- XPathNodeList.cs
- ActivationArguments.cs
- EntityDataSourceContainerNameItem.cs
- GroupDescription.cs
- TypeBinaryExpression.cs
- VisualProxy.cs
- ClientScriptManagerWrapper.cs
- HtmlGenericControl.cs
- StorageEntityContainerMapping.cs
- PopupRootAutomationPeer.cs
- OracleConnectionStringBuilder.cs
- OperatingSystem.cs
- MSAANativeProvider.cs
- OracleParameterCollection.cs
- ListViewItemEventArgs.cs
- CommandSet.cs
- DnsEndpointIdentity.cs
- SamlAssertionKeyIdentifierClause.cs
- AccessDataSourceView.cs
- SimpleWebHandlerParser.cs
- TextComposition.cs
- ResourceContainer.cs
- TextFormattingConverter.cs
- ForceCopyBuildProvider.cs
- SrgsElementFactoryCompiler.cs
- BindingManagerDataErrorEventArgs.cs
- Knowncolors.cs
- Container.cs
- OTFRasterizer.cs
- XmlILTrace.cs
- PermissionSetTriple.cs
- CodeCompiler.cs
- NetworkInterface.cs
- Soap11ServerProtocol.cs
- Vector3DCollection.cs
- CommentGlyph.cs
- XmlDocument.cs
- IdentityVerifier.cs
- StructuralObject.cs
- XDRSchema.cs
- CollectionViewGroup.cs
- SplitterPanel.cs
- MsmqMessage.cs