Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegistryPermission.cs
- DataServiceQueryException.cs
- TableLayoutPanelDesigner.cs
- DBCommandBuilder.cs
- NativeWindow.cs
- SafeRightsManagementPubHandle.cs
- DataBindingCollection.cs
- InvalidProgramException.cs
- WindowsHyperlink.cs
- SqlProvider.cs
- SqlGenerator.cs
- TextAdaptor.cs
- MaskedTextBox.cs
- ContextMenuAutomationPeer.cs
- SiteMapNodeItem.cs
- HandleCollector.cs
- WizardForm.cs
- MembershipUser.cs
- DataGridViewElement.cs
- storepermission.cs
- _TLSstream.cs
- sqlstateclientmanager.cs
- MessageQueuePermissionEntry.cs
- NullEntityWrapper.cs
- LineServicesCallbacks.cs
- XComponentModel.cs
- AnimationLayer.cs
- ProxyElement.cs
- CngKeyBlobFormat.cs
- StreamGeometry.cs
- _LazyAsyncResult.cs
- UnsafeNativeMethods.cs
- unsafenativemethodsother.cs
- UpdateTracker.cs
- webproxy.cs
- TabPageDesigner.cs
- StateValidator.cs
- QueryCacheManager.cs
- DispatchRuntime.cs
- SQLBytes.cs
- WebPartExportVerb.cs
- DataAdapter.cs
- WeakEventTable.cs
- CorrelationValidator.cs
- WebPartTracker.cs
- EventRoute.cs
- DataGridRow.cs
- CodeNamespaceImport.cs
- PageCodeDomTreeGenerator.cs
- SelectionItemPattern.cs
- LineInfo.cs
- HandleRef.cs
- List.cs
- InputQueue.cs
- OdbcDataAdapter.cs
- Stopwatch.cs
- BuildManagerHost.cs
- Sql8ExpressionRewriter.cs
- BreakSafeBase.cs
- WebBrowsableAttribute.cs
- SoapExtensionTypeElementCollection.cs
- IntellisenseTextBox.cs
- ImageListStreamer.cs
- ArgumentException.cs
- ZoomPercentageConverter.cs
- GradientStop.cs
- controlskin.cs
- DataBinding.cs
- RuntimeArgumentHandle.cs
- NamespaceInfo.cs
- ColorConvertedBitmapExtension.cs
- QilName.cs
- XmlComplianceUtil.cs
- HtmlLink.cs
- TableCell.cs
- FatalException.cs
- SqlFlattener.cs
- PrinterUnitConvert.cs
- IDispatchConstantAttribute.cs
- ProjectionCamera.cs
- ErrorEventArgs.cs
- DBConcurrencyException.cs
- NullableIntMinMaxAggregationOperator.cs
- Base64Decoder.cs
- ActivityDesignerResources.cs
- LockingPersistenceProvider.cs
- ConfigurationPermission.cs
- MenuItemAutomationPeer.cs
- AutomationIdentifier.cs
- DeclarativeCatalogPart.cs
- Triangle.cs
- TextEndOfLine.cs
- QueryStatement.cs
- NativeObjectSecurity.cs
- TiffBitmapEncoder.cs
- StateDesigner.CommentLayoutGlyph.cs
- FieldTemplateFactory.cs
- RecognizedAudio.cs
- BeginStoryboard.cs
- PriorityRange.cs