Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / internal / materialization / util.cs / 1305376 / 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
- StateInitializationDesigner.cs
- LeftCellWrapper.cs
- printdlgexmarshaler.cs
- CapabilitiesSection.cs
- Accessible.cs
- DelegateArgument.cs
- versioninfo.cs
- HandledEventArgs.cs
- WebSysDefaultValueAttribute.cs
- SimpleBitVector32.cs
- XmlNamespaceManager.cs
- SHA384.cs
- XmlWellformedWriter.cs
- BuildDependencySet.cs
- DataSourceXmlSubItemAttribute.cs
- CompilationSection.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TripleDESCryptoServiceProvider.cs
- SiteMapDataSourceView.cs
- PointConverter.cs
- Utility.cs
- Policy.cs
- XhtmlTextWriter.cs
- HtmlImage.cs
- KoreanLunisolarCalendar.cs
- CustomValidator.cs
- Asn1IntegerConverter.cs
- Margins.cs
- ConstNode.cs
- DrawingContext.cs
- MailHeaderInfo.cs
- MLangCodePageEncoding.cs
- SqlCacheDependencyDatabaseCollection.cs
- FilterElement.cs
- SqlRowUpdatingEvent.cs
- SkewTransform.cs
- Environment.cs
- EditorPart.cs
- AesCryptoServiceProvider.cs
- ValuePatternIdentifiers.cs
- ClientScriptManagerWrapper.cs
- SystemKeyConverter.cs
- SrgsNameValueTag.cs
- Exception.cs
- RawMouseInputReport.cs
- PageTrueTypeFont.cs
- Utils.cs
- ActionFrame.cs
- EventWaitHandleSecurity.cs
- BitmapImage.cs
- PrintPreviewDialog.cs
- EncoderReplacementFallback.cs
- SettingsPropertyValue.cs
- CellPartitioner.cs
- ImportException.cs
- DEREncoding.cs
- CodeNamespaceImportCollection.cs
- CharacterMetrics.cs
- ConditionalAttribute.cs
- ContentOperations.cs
- TextMarkerSource.cs
- NavigatingCancelEventArgs.cs
- ShaderEffect.cs
- UserControl.cs
- DataBindingCollection.cs
- WaveHeader.cs
- GenericAuthenticationEventArgs.cs
- QueryContinueDragEventArgs.cs
- FormsAuthenticationUser.cs
- HijriCalendar.cs
- AutomationPropertyInfo.cs
- CheckBox.cs
- BrowserTree.cs
- FileClassifier.cs
- PreviewPageInfo.cs
- DataGridViewRowCollection.cs
- CodeRegionDirective.cs
- CatalogZoneBase.cs
- DynamicValueConverter.cs
- WindowsProgressbar.cs
- CatalogPart.cs
- DataGridAddNewRow.cs
- ReferenceConverter.cs
- IndexerNameAttribute.cs
- SQLBinary.cs
- COAUTHIDENTITY.cs
- EmptyQuery.cs
- CodeTypeParameter.cs
- SizeFConverter.cs
- ObjectTag.cs
- TextEditorContextMenu.cs
- ComponentDispatcher.cs
- SourceFilter.cs
- XPathParser.cs
- Pointer.cs
- XmlPropertyBag.cs
- SpAudioStreamWrapper.cs
- QilVisitor.cs
- ThreadInterruptedException.cs
- FolderBrowserDialog.cs