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
- PeerCollaborationPermission.cs
- InstanceKeyCompleteException.cs
- RawStylusActions.cs
- DataSourceView.cs
- HttpServerUtilityWrapper.cs
- DataMember.cs
- BypassElementCollection.cs
- DocumentCollection.cs
- StrokeFIndices.cs
- ServicePointManagerElement.cs
- ParallelTimeline.cs
- WindowInteractionStateTracker.cs
- XmlSchemaSubstitutionGroup.cs
- PeerNameRegistration.cs
- _LocalDataStoreMgr.cs
- ChtmlImageAdapter.cs
- HostedBindingBehavior.cs
- FontFamilyValueSerializer.cs
- AggregatePushdown.cs
- HandlerBase.cs
- SeekableReadStream.cs
- CngProperty.cs
- LocalizeDesigner.cs
- XmlNodeChangedEventManager.cs
- RequestCachePolicyConverter.cs
- ReadWriteSpinLock.cs
- ReversePositionQuery.cs
- EventMappingSettingsCollection.cs
- IsolatedStoragePermission.cs
- ExpandCollapseIsCheckedConverter.cs
- ExpressionList.cs
- CellConstantDomain.cs
- RegisterInfo.cs
- IIS7WorkerRequest.cs
- SqlNodeTypeOperators.cs
- DataKey.cs
- XamlReader.cs
- TextBoxView.cs
- SectionUpdates.cs
- TemplatePropertyEntry.cs
- LongValidator.cs
- ButtonBase.cs
- QueryPageSettingsEventArgs.cs
- UInt32Converter.cs
- XmlSchemaExternal.cs
- TextWriterTraceListener.cs
- EncodingInfo.cs
- SamlNameIdentifierClaimResource.cs
- ConvertEvent.cs
- EnumerableCollectionView.cs
- WindowsTab.cs
- RepeatEnumerable.cs
- CustomPopupPlacement.cs
- WebColorConverter.cs
- ContainerParagraph.cs
- ObjectCacheSettings.cs
- TabPage.cs
- ChtmlSelectionListAdapter.cs
- UInt16Storage.cs
- MultiSelectRootGridEntry.cs
- ErrorHandler.cs
- MarkupWriter.cs
- WebPartsPersonalization.cs
- AssemblyResourceLoader.cs
- RbTree.cs
- ProviderConnectionPointCollection.cs
- PixelShader.cs
- Model3D.cs
- CategoriesDocumentFormatter.cs
- CodeCatchClause.cs
- PointLightBase.cs
- TextPatternIdentifiers.cs
- PreservationFileWriter.cs
- PublisherIdentityPermission.cs
- ProcessHostConfigUtils.cs
- Html32TextWriter.cs
- XmlSerializerSection.cs
- InputManager.cs
- RelationshipType.cs
- ComponentSerializationService.cs
- BitmapData.cs
- XmlSignificantWhitespace.cs
- SearchForVirtualItemEventArgs.cs
- ListChangedEventArgs.cs
- InputScope.cs
- RegexWorker.cs
- XmlDataLoader.cs
- SelectorAutomationPeer.cs
- RecordManager.cs
- XmlImplementation.cs
- MarkupCompiler.cs
- DataKey.cs
- CompModSwitches.cs
- SqlDataReaderSmi.cs
- COM2ExtendedUITypeEditor.cs
- ConfigXmlSignificantWhitespace.cs
- EntityUtil.cs
- PointCollectionValueSerializer.cs
- InputDevice.cs
- TransactionFlowBindingElementImporter.cs