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
- RegexParser.cs
- PropertyInformationCollection.cs
- GridViewPageEventArgs.cs
- MethodImplAttribute.cs
- TreeWalkHelper.cs
- ArrayItemReference.cs
- ListSourceHelper.cs
- SamlSerializer.cs
- SplayTreeNode.cs
- dataobject.cs
- X509Extension.cs
- DataGridItemAttachedStorage.cs
- InvalidWMPVersionException.cs
- SignerInfo.cs
- Size3D.cs
- StorageMappingItemLoader.cs
- SrgsElementList.cs
- TreeViewAutomationPeer.cs
- MobileResource.cs
- UserControl.cs
- DetailsViewRowCollection.cs
- SecurityPolicySection.cs
- ExceptQueryOperator.cs
- ImageResources.Designer.cs
- IDReferencePropertyAttribute.cs
- DesignerOptionService.cs
- EditingCoordinator.cs
- SqlWriter.cs
- ClientBuildManagerCallback.cs
- X509Certificate2Collection.cs
- Utils.cs
- ReadOnlyDataSourceView.cs
- HasCopySemanticsAttribute.cs
- XMLSchema.cs
- ArcSegment.cs
- COM2ColorConverter.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- IODescriptionAttribute.cs
- BidPrivateBase.cs
- DisplayMemberTemplateSelector.cs
- SizeAnimation.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- EndPoint.cs
- VectorCollectionValueSerializer.cs
- AttributeProviderAttribute.cs
- XPathSelfQuery.cs
- ListViewTableCell.cs
- SendMessageRecord.cs
- ContentIterators.cs
- OutOfMemoryException.cs
- SubMenuStyle.cs
- DispatcherFrame.cs
- CompiledXpathExpr.cs
- CodeRegionDirective.cs
- EncoderReplacementFallback.cs
- RSAOAEPKeyExchangeFormatter.cs
- Parsers.cs
- ClientConfigPaths.cs
- ToolStripScrollButton.cs
- PasswordRecovery.cs
- Material.cs
- PerspectiveCamera.cs
- SortKey.cs
- __Filters.cs
- ConfigurationManager.cs
- MenuStrip.cs
- ReachVisualSerializer.cs
- InternalConfigSettingsFactory.cs
- Animatable.cs
- MethodRental.cs
- UnwrappedTypesXmlSerializerManager.cs
- TransformPattern.cs
- ConfigurationManagerHelper.cs
- xdrvalidator.cs
- BamlTreeNode.cs
- XsltContext.cs
- ErrorWrapper.cs
- XPathChildIterator.cs
- XmlChildNodes.cs
- ResourceType.cs
- MainMenu.cs
- NotificationContext.cs
- WebRequestModulesSection.cs
- TemplateKey.cs
- DataGridAddNewRow.cs
- CompilerTypeWithParams.cs
- SafeFileMappingHandle.cs
- EmptyEnumerator.cs
- WebRequestModuleElement.cs
- RowBinding.cs
- ListBindingConverter.cs
- VisualProxy.cs
- ProcessModule.cs
- RecognizerStateChangedEventArgs.cs
- PageHandlerFactory.cs
- PrePostDescendentsWalker.cs
- PartialToken.cs
- AssemblyUtil.cs
- DropAnimation.xaml.cs
- ExpressionWriter.cs