Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- Message.cs
- EasingKeyFrames.cs
- StagingAreaInputItem.cs
- MachineKeySection.cs
- EncoderExceptionFallback.cs
- StaticFileHandler.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- URI.cs
- _HeaderInfo.cs
- ClosableStream.cs
- WebPartZone.cs
- InvalidStoreProtectionKeyException.cs
- WebBrowserHelper.cs
- ExpressionBinding.cs
- EnumConverter.cs
- SingleKeyFrameCollection.cs
- InkCanvasAutomationPeer.cs
- RadioButtonList.cs
- DataContractSerializerElement.cs
- SystemUnicastIPAddressInformation.cs
- CmsInterop.cs
- PersonalizationEntry.cs
- Int32EqualityComparer.cs
- SafeNativeMethods.cs
- XsltConvert.cs
- FlowNode.cs
- CachingHintValidation.cs
- EntityKey.cs
- WindowsToolbarAsMenu.cs
- DataGridViewTopLeftHeaderCell.cs
- DataTableCollection.cs
- AnnotationResourceCollection.cs
- PropertiesTab.cs
- Types.cs
- SimpleHandlerFactory.cs
- OleDbPermission.cs
- MsmqException.cs
- SecurityImpersonationBehavior.cs
- UndirectedGraph.cs
- PropertyGrid.cs
- PropertyEmitter.cs
- Label.cs
- RegisteredHiddenField.cs
- StringFunctions.cs
- Point3DAnimation.cs
- ActivityWithResultConverter.cs
- MissingManifestResourceException.cs
- Thumb.cs
- RotateTransform3D.cs
- AccessDataSource.cs
- InfoCardKeyedHashAlgorithm.cs
- FlowLayoutPanel.cs
- ImageListImageEditor.cs
- Internal.cs
- SmiRequestExecutor.cs
- ConnectionManagementElement.cs
- EntitySetBaseCollection.cs
- invalidudtexception.cs
- CodeComment.cs
- DataSpaceManager.cs
- DataFormats.cs
- InkCanvasFeedbackAdorner.cs
- ExeConfigurationFileMap.cs
- GraphicsPathIterator.cs
- TableStyle.cs
- SynchronizationLockException.cs
- Activation.cs
- CodeArrayCreateExpression.cs
- PointHitTestResult.cs
- BindableTemplateBuilder.cs
- StrongNameUtility.cs
- RevocationPoint.cs
- MembershipValidatePasswordEventArgs.cs
- IPHostEntry.cs
- FileAuthorizationModule.cs
- NullEntityWrapper.cs
- __Filters.cs
- SymbolEqualComparer.cs
- CompositeFontFamily.cs
- FontFamilyIdentifier.cs
- BrowserCapabilitiesFactory.cs
- Utility.cs
- Rotation3D.cs
- IPEndPoint.cs
- XmlHelper.cs
- Label.cs
- lengthconverter.cs
- DbgCompiler.cs
- WebPartZone.cs
- KeyEvent.cs
- HtmlLink.cs
- XmlElementAttribute.cs
- RunWorkerCompletedEventArgs.cs
- CheckPair.cs
- ManagementQuery.cs
- TextDpi.cs
- InternalConfigSettingsFactory.cs
- SessionEndedEventArgs.cs
- ResourceDisplayNameAttribute.cs
- SingleKeyFrameCollection.cs