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
- XmlExceptionHelper.cs
- TemplateParser.cs
- EnumCodeDomSerializer.cs
- PtsContext.cs
- EtwProvider.cs
- RotateTransform.cs
- FactoryRecord.cs
- ResourceContainer.cs
- SendActivityDesignerTheme.cs
- TraceListener.cs
- BinaryFormatter.cs
- PropertyFilterAttribute.cs
- HtmlDocument.cs
- ResourceDescriptionAttribute.cs
- HwndAppCommandInputProvider.cs
- FontCacheUtil.cs
- CngAlgorithmGroup.cs
- PerformanceCounter.cs
- Compress.cs
- SecurityKeyIdentifier.cs
- EntityDataSourceMemberPath.cs
- PagedDataSource.cs
- EdmSchemaError.cs
- Stack.cs
- FormsAuthenticationCredentials.cs
- HyperLink.cs
- ServicePrincipalNameElement.cs
- AssociationTypeEmitter.cs
- DropShadowEffect.cs
- TextElement.cs
- SynchronizationLockException.cs
- XmlNodeChangedEventArgs.cs
- BindingCompleteEventArgs.cs
- XmlChildEnumerator.cs
- Authorization.cs
- WinInetCache.cs
- ManualResetEventSlim.cs
- ObjectKeyFrameCollection.cs
- SqlDataSourceView.cs
- TableLayoutPanel.cs
- HtmlFormWrapper.cs
- PageThemeParser.cs
- OutOfMemoryException.cs
- EnumMemberAttribute.cs
- XmlSchemaAppInfo.cs
- OleStrCAMarshaler.cs
- SuppressMessageAttribute.cs
- RootBuilder.cs
- PresentationAppDomainManager.cs
- FixedSOMTableCell.cs
- BaseProcessor.cs
- SimpleRecyclingCache.cs
- OdbcException.cs
- SQLBinary.cs
- XmlReaderSettings.cs
- ExtendedProtectionPolicyElement.cs
- _RequestCacheProtocol.cs
- TextCollapsingProperties.cs
- View.cs
- GPRECT.cs
- ProxyWebPartManager.cs
- WebDescriptionAttribute.cs
- WebBrowserNavigatingEventHandler.cs
- MachineKeySection.cs
- RowToFieldTransformer.cs
- XmlHelper.cs
- CodeBinaryOperatorExpression.cs
- PhonemeConverter.cs
- WindowHideOrCloseTracker.cs
- Model3DGroup.cs
- Grid.cs
- VisualTarget.cs
- DataGridViewRowConverter.cs
- DataGridViewAutoSizeModeEventArgs.cs
- TransformerInfo.cs
- UidManager.cs
- Compiler.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- FlowLayout.cs
- Knowncolors.cs
- NamespaceDecl.cs
- CodeGenerator.cs
- UxThemeWrapper.cs
- SessionEndingCancelEventArgs.cs
- GetPageNumberCompletedEventArgs.cs
- XmlIlVisitor.cs
- OuterGlowBitmapEffect.cs
- BmpBitmapDecoder.cs
- SubclassTypeValidator.cs
- Point3DCollection.cs
- AttachedAnnotation.cs
- SystemEvents.cs
- ElementMarkupObject.cs
- XmlQueryContext.cs
- Int32Rect.cs
- XPathPatternBuilder.cs
- ListBox.cs
- TreeIterators.cs
- DataServiceQueryOfT.cs
- DurableServiceAttribute.cs