Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- TypeListConverter.cs
- TextCharacters.cs
- DiagnosticTraceSource.cs
- DrawingAttributeSerializer.cs
- DataRelationCollection.cs
- IPPacketInformation.cs
- WSUtilitySpecificationVersion.cs
- AnnotationHelper.cs
- LoginUtil.cs
- NameSpaceExtractor.cs
- TableDetailsRow.cs
- ElementFactory.cs
- GenericsNotImplementedException.cs
- BaseCodeDomTreeGenerator.cs
- DecoderFallback.cs
- TreeNodeEventArgs.cs
- SafeCryptHandles.cs
- DataBindingExpressionBuilder.cs
- TdsParameterSetter.cs
- StatusBarDrawItemEvent.cs
- SQLInt64Storage.cs
- PrefixHandle.cs
- ImageCodecInfoPrivate.cs
- ResourceDefaultValueAttribute.cs
- FamilyMap.cs
- ResXFileRef.cs
- ScriptReferenceEventArgs.cs
- ApplicationInfo.cs
- DbProviderConfigurationHandler.cs
- HttpUnhandledOperationInvoker.cs
- DeviceContexts.cs
- FamilyTypefaceCollection.cs
- DesignerTransactionCloseEvent.cs
- Run.cs
- FlowLayoutPanelDesigner.cs
- WebPartPersonalization.cs
- FontStyle.cs
- TypefaceMap.cs
- TypeForwardedToAttribute.cs
- CmsUtils.cs
- FontStyle.cs
- RouteData.cs
- FontCacheUtil.cs
- IdleTimeoutMonitor.cs
- Path.cs
- Vector3DConverter.cs
- Variable.cs
- ZoneButton.cs
- ValueTypeFixupInfo.cs
- CancellableEnumerable.cs
- DataGridCellsPresenter.cs
- ExpressionReplacer.cs
- EdmProviderManifest.cs
- EntityDataSourceReferenceGroup.cs
- FixedPage.cs
- XPathNodeInfoAtom.cs
- TemplateEditingService.cs
- SecurityPolicySection.cs
- ManipulationInertiaStartingEventArgs.cs
- SimpleMailWebEventProvider.cs
- StylusDevice.cs
- CaseKeyBox.ViewModel.cs
- TextRunProperties.cs
- GridSplitterAutomationPeer.cs
- BitmapEffectInputConnector.cs
- SchemaEntity.cs
- WorkflowServiceInstance.cs
- CommandTreeTypeHelper.cs
- DataException.cs
- TextTreeNode.cs
- SchemaCollectionPreprocessor.cs
- BitmapSource.cs
- SingleAnimation.cs
- DataControlPagerLinkButton.cs
- GroupByExpressionRewriter.cs
- Configuration.cs
- Transform.cs
- ConfigXmlSignificantWhitespace.cs
- RegexWorker.cs
- FontInfo.cs
- GeneralTransform3D.cs
- RtfToXamlLexer.cs
- ToolBarButtonDesigner.cs
- WebPageTraceListener.cs
- OutOfProcStateClientManager.cs
- ByteStreamGeometryContext.cs
- CodeBlockBuilder.cs
- TraceHandlerErrorFormatter.cs
- DetailsViewInsertedEventArgs.cs
- TCEAdapterGenerator.cs
- RegexCaptureCollection.cs
- SoapWriter.cs
- SharedPerformanceCounter.cs
- ToolboxItemAttribute.cs
- WsatServiceAddress.cs
- NameValueConfigurationCollection.cs
- TimeZone.cs
- NativeMethods.cs
- EditingCommands.cs
- RelatedView.cs