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
- CodeComment.cs
- QilTypeChecker.cs
- XmlLoader.cs
- DbConnectionPoolGroupProviderInfo.cs
- TextEncodedRawTextWriter.cs
- RoleServiceManager.cs
- SolidColorBrush.cs
- SqlIdentifier.cs
- AuthenticationModulesSection.cs
- MimeWriter.cs
- TraceInternal.cs
- XmlName.cs
- ListQueryResults.cs
- XmlNamespaceMapping.cs
- BindingValueChangedEventArgs.cs
- AnimationClock.cs
- CssTextWriter.cs
- ResourceProviderFactory.cs
- XmlFormatWriterGenerator.cs
- WorkflowDataContext.cs
- DBDataPermission.cs
- BypassElementCollection.cs
- WebMessageEncodingElement.cs
- RowToParametersTransformer.cs
- StopStoryboard.cs
- QilName.cs
- SpotLight.cs
- StrokeNodeData.cs
- BrowserCapabilitiesFactoryBase.cs
- OrderedHashRepartitionEnumerator.cs
- ToolStripSeparatorRenderEventArgs.cs
- ControlBuilder.cs
- TokenBasedSet.cs
- ScriptReference.cs
- EditorPartCollection.cs
- TreeWalker.cs
- updatecommandorderer.cs
- Enlistment.cs
- Point.cs
- RtfControls.cs
- RectIndependentAnimationStorage.cs
- HeaderUtility.cs
- PropertyValueEditor.cs
- ReadOnlyCollectionBase.cs
- PointConverter.cs
- ListItemParagraph.cs
- DBNull.cs
- WindowProviderWrapper.cs
- ScrollChrome.cs
- TabControl.cs
- AxHost.cs
- BindingWorker.cs
- ConnectionsZone.cs
- documentsequencetextview.cs
- MouseActionValueSerializer.cs
- MobileListItem.cs
- VectorAnimationUsingKeyFrames.cs
- ThreadStateException.cs
- TypeDefinition.cs
- WebBrowsableAttribute.cs
- Activity.cs
- BaseUriWithWildcard.cs
- TraceData.cs
- ServiceChannelManager.cs
- JoinSymbol.cs
- BinaryCommonClasses.cs
- UriScheme.cs
- BinaryObjectReader.cs
- WsiProfilesElement.cs
- NavigatorInvalidBodyAccessException.cs
- ConfigXmlComment.cs
- SoapAttributeAttribute.cs
- webbrowsersite.cs
- ListSourceHelper.cs
- StyleBamlTreeBuilder.cs
- XXXOnTypeBuilderInstantiation.cs
- ResumeStoryboard.cs
- Types.cs
- ListenDesigner.cs
- SafeCryptContextHandle.cs
- PointUtil.cs
- SecurityHeaderLayout.cs
- CommandField.cs
- PtsContext.cs
- TextTrailingWordEllipsis.cs
- CodeMemberEvent.cs
- EmbossBitmapEffect.cs
- MemberMaps.cs
- TrustLevelCollection.cs
- TextSerializer.cs
- ResourceReferenceExpressionConverter.cs
- MessageParameterAttribute.cs
- ByteStreamBufferedMessageData.cs
- EditorPartCollection.cs
- SupportsEventValidationAttribute.cs
- DependencyObjectProvider.cs
- TagPrefixAttribute.cs
- DataAccessException.cs
- DataTableCollection.cs
- URLAttribute.cs