Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SectionUpdates.cs
- EncoderExceptionFallback.cs
- RangeBaseAutomationPeer.cs
- ProcessManager.cs
- ErrorLog.cs
- SafeEventLogWriteHandle.cs
- Fx.cs
- OptimizedTemplateContent.cs
- PageAsyncTaskManager.cs
- MessagePartSpecification.cs
- ChameleonKey.cs
- AttachmentService.cs
- ToolStripSplitButton.cs
- Empty.cs
- TextServicesDisplayAttributePropertyRanges.cs
- DataKeyCollection.cs
- AgileSafeNativeMemoryHandle.cs
- AddInBase.cs
- ChangesetResponse.cs
- ConfigurationSettings.cs
- ProviderUtil.cs
- LocationReferenceValue.cs
- GridViewRowCollection.cs
- SimpleMailWebEventProvider.cs
- _NetworkingPerfCounters.cs
- WithStatement.cs
- ProxyGenerator.cs
- TextEffectCollection.cs
- AutomationPropertyInfo.cs
- ServiceHttpHandlerFactory.cs
- PropertyItemInternal.cs
- SqlCacheDependencySection.cs
- ParameterBinding.cs
- activationcontext.cs
- Expressions.cs
- PropertyItem.cs
- DesignerSerializationManager.cs
- OracleParameterCollection.cs
- ReadOnlyTernaryTree.cs
- SectionXmlInfo.cs
- SecurityRuntime.cs
- FtpCachePolicyElement.cs
- CompressedStack.cs
- CaseCqlBlock.cs
- RelatedImageListAttribute.cs
- MetadataUtilsSmi.cs
- Geometry.cs
- SqlXml.cs
- OperationExecutionFault.cs
- InvalidOleVariantTypeException.cs
- ScriptResourceMapping.cs
- COM2ExtendedUITypeEditor.cs
- WindowsAuthenticationEventArgs.cs
- BamlBinaryReader.cs
- ProxyGenerationError.cs
- BasePropertyDescriptor.cs
- DataGridViewComponentPropertyGridSite.cs
- ExportOptions.cs
- DataFormat.cs
- UTF32Encoding.cs
- UInt32Storage.cs
- ISAPIApplicationHost.cs
- Token.cs
- TypeUnloadedException.cs
- OleDbRowUpdatedEvent.cs
- ValidatorCollection.cs
- CodeDomSerializerException.cs
- XamlReaderConstants.cs
- ObjectContextServiceProvider.cs
- SerializationInfo.cs
- FormsAuthenticationEventArgs.cs
- SettingsPropertyValueCollection.cs
- FacetDescriptionElement.cs
- DependencyPropertyKind.cs
- CharUnicodeInfo.cs
- FacetValues.cs
- NumberFunctions.cs
- Size.cs
- VectorCollectionValueSerializer.cs
- TrackingMemoryStreamFactory.cs
- WebPartEventArgs.cs
- SessionStateModule.cs
- FormsAuthenticationConfiguration.cs
- TextStore.cs
- SQLDecimalStorage.cs
- NegationPusher.cs
- Label.cs
- TreeViewItem.cs
- NetworkInformationException.cs
- RepeatInfo.cs
- FileFormatException.cs
- DataGridCellsPanel.cs
- SocketException.cs
- FilterEventArgs.cs
- ProxyWebPartConnectionCollection.cs
- TablePattern.cs
- CookieProtection.cs
- Propagator.cs
- DataTrigger.cs
- DetailsView.cs