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
- DocumentSignatureManager.cs
- ZipIOExtraFieldElement.cs
- TimeoutException.cs
- ButtonBase.cs
- ConfigurationManager.cs
- UpdatePanelTrigger.cs
- WebControlParameterProxy.cs
- ColumnMapCopier.cs
- MenuItemCollection.cs
- MouseActionConverter.cs
- KeyManager.cs
- JumpList.cs
- PreviousTrackingServiceAttribute.cs
- OperationParameterInfoCollection.cs
- TrackingWorkflowEventArgs.cs
- ObjectQuery.cs
- Decorator.cs
- DataGridTablesFactory.cs
- DataGridViewRowsAddedEventArgs.cs
- HttpClientChannel.cs
- HandleValueEditor.cs
- DataSysAttribute.cs
- ToolBar.cs
- ISessionStateStore.cs
- DateTimeConverter.cs
- PassportAuthenticationModule.cs
- TreeNodeBinding.cs
- Help.cs
- JoinSymbol.cs
- PowerModeChangedEventArgs.cs
- ServiceReference.cs
- _NativeSSPI.cs
- EntityContainer.cs
- AutoGeneratedFieldProperties.cs
- HttpCapabilitiesBase.cs
- UInt64.cs
- DocumentAutomationPeer.cs
- TextTreeNode.cs
- DateTimeValueSerializer.cs
- CodeDirectoryCompiler.cs
- ObjectSet.cs
- TableColumn.cs
- TextEditorSelection.cs
- TabPage.cs
- Transform.cs
- XmlMtomReader.cs
- XmlParserContext.cs
- SafeFreeMibTable.cs
- AssemblyAttributes.cs
- IISUnsafeMethods.cs
- CacheMemory.cs
- GlyphRunDrawing.cs
- DiscoveryInnerClientAdhocCD1.cs
- EventData.cs
- _SecureChannel.cs
- ImmutableAssemblyCacheEntry.cs
- VisualTreeUtils.cs
- ArrayElementGridEntry.cs
- GroupStyle.cs
- SmtpSection.cs
- CodeTypeParameterCollection.cs
- Attributes.cs
- DataControlFieldTypeEditor.cs
- PageCanvasSize.cs
- SendActivityDesigner.cs
- ServiceDescriptions.cs
- Msec.cs
- MeasureItemEvent.cs
- GorillaCodec.cs
- CombinedGeometry.cs
- SystemUnicastIPAddressInformation.cs
- MessageFormatterConverter.cs
- StatusBarDrawItemEvent.cs
- WebCategoryAttribute.cs
- SqlDataReader.cs
- WebExceptionStatus.cs
- DynamicEndpoint.cs
- OneOfElement.cs
- SchemaImporterExtensionsSection.cs
- RepeatBehaviorConverter.cs
- ListenerChannelContext.cs
- Vars.cs
- SqlSelectClauseBuilder.cs
- NativeMethods.cs
- MSHTMLHostUtil.cs
- DataListDesigner.cs
- GenericEnumConverter.cs
- MaterialGroup.cs
- PrimitiveSchema.cs
- HttpResponseInternalWrapper.cs
- LocalizabilityAttribute.cs
- DebugController.cs
- SqlFlattener.cs
- XmlCustomFormatter.cs
- CapabilitiesPattern.cs
- LinqDataSourceInsertEventArgs.cs
- QueryableFilterRepeater.cs
- Pkcs9Attribute.cs
- CodeTypeDelegate.cs
- JpegBitmapEncoder.cs