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
- DisplayNameAttribute.cs
- DataTableExtensions.cs
- CodeAttributeArgument.cs
- XmlReflectionMember.cs
- PerspectiveCamera.cs
- StateManagedCollection.cs
- Merger.cs
- DynamicPropertyHolder.cs
- SingletonInstanceContextProvider.cs
- EpmContentSerializer.cs
- RepeaterCommandEventArgs.cs
- UnknownBitmapEncoder.cs
- CompiledRegexRunner.cs
- ProfilePropertySettingsCollection.cs
- ExcludeFromCodeCoverageAttribute.cs
- ButtonPopupAdapter.cs
- LinqDataSourceContextEventArgs.cs
- TableAutomationPeer.cs
- EntityDataSourceDataSelection.cs
- GrabHandleGlyph.cs
- LifetimeServices.cs
- TCPListener.cs
- AuthenticationConfig.cs
- ColumnResizeAdorner.cs
- ComponentRenameEvent.cs
- UriTemplateQueryValue.cs
- FixedPage.cs
- TimeSpanOrInfiniteConverter.cs
- OracleCommandSet.cs
- DockProviderWrapper.cs
- ComplexType.cs
- XmlNullResolver.cs
- OperationParameterInfoCollection.cs
- SQLDouble.cs
- PageContentCollection.cs
- DataGridColumnHeaderCollection.cs
- bidPrivateBase.cs
- GZipDecoder.cs
- Misc.cs
- WorkflowDesignerColors.cs
- HttpApplicationFactory.cs
- FolderBrowserDialog.cs
- TextTreeTextNode.cs
- BitmapDecoder.cs
- ComponentEvent.cs
- Base64Encoding.cs
- FakeModelItemImpl.cs
- GPStream.cs
- IteratorDescriptor.cs
- ISFClipboardData.cs
- QueryHandler.cs
- HyperLinkColumn.cs
- StorageEntityContainerMapping.cs
- TransformedBitmap.cs
- PropertyReferenceSerializer.cs
- OleDbWrapper.cs
- TraceData.cs
- CrossContextChannel.cs
- CodeAccessSecurityEngine.cs
- NumberSubstitution.cs
- ThreadStateException.cs
- ServiceDesigner.cs
- ProviderMetadata.cs
- RichTextBox.cs
- SystemInfo.cs
- DataGridViewTextBoxColumn.cs
- XhtmlTextWriter.cs
- AnnotationHighlightLayer.cs
- Reference.cs
- PersonalizationDictionary.cs
- xmlNames.cs
- BindingFormattingDialog.cs
- MediaElement.cs
- InvariantComparer.cs
- SchemaCollectionCompiler.cs
- SequentialOutput.cs
- DockPanel.cs
- TextInfo.cs
- ToolStripAdornerWindowService.cs
- EvidenceTypeDescriptor.cs
- ClientSettingsStore.cs
- JsonGlobals.cs
- SeparatorAutomationPeer.cs
- TreeViewItemAutomationPeer.cs
- InkCanvasSelection.cs
- PreProcessInputEventArgs.cs
- ByteArrayHelperWithString.cs
- UserInitiatedNavigationPermission.cs
- XmlDataSourceNodeDescriptor.cs
- SHA384CryptoServiceProvider.cs
- PreDigestedSignedInfo.cs
- LineServices.cs
- LinkArea.cs
- TypeLibConverter.cs
- UnsignedPublishLicense.cs
- UserPreferenceChangingEventArgs.cs
- ModelVisual3D.cs
- Application.cs
- ParallelEnumerable.cs
- XmlAttribute.cs