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
- elementinformation.cs
- MappingItemCollection.cs
- ClientSession.cs
- ValueChangedEventManager.cs
- DateTimeParse.cs
- TaskForm.cs
- CompositeFontParser.cs
- SafeNativeMethodsOther.cs
- ManagementEventWatcher.cs
- ObjectQueryState.cs
- ButtonChrome.cs
- DataExpression.cs
- Matrix.cs
- OleDbParameterCollection.cs
- SplineQuaternionKeyFrame.cs
- XmlHelper.cs
- ClientTargetSection.cs
- HostingPreferredMapPath.cs
- DataGridItemAutomationPeer.cs
- LambdaCompiler.ControlFlow.cs
- GrammarBuilderBase.cs
- ContentType.cs
- DocComment.cs
- ComponentEditorForm.cs
- SqlClientMetaDataCollectionNames.cs
- Base64Encoder.cs
- ItemCheckEvent.cs
- _SslStream.cs
- PartialCachingAttribute.cs
- MemoryStream.cs
- SynchronizedInputHelper.cs
- SafeWaitHandle.cs
- ImplicitInputBrush.cs
- ProfileGroupSettings.cs
- AdapterUtil.cs
- NamespaceMapping.cs
- GroupBoxRenderer.cs
- BitmapEffectGroup.cs
- SpecularMaterial.cs
- DataGridHeaderBorder.cs
- MetafileHeader.cs
- ProtectedConfiguration.cs
- RawStylusSystemGestureInputReport.cs
- XmlSchemaSimpleTypeUnion.cs
- Metafile.cs
- CachedCompositeFamily.cs
- AnnotationDocumentPaginator.cs
- UInt16Storage.cs
- InfoCardTrace.cs
- RawStylusInputCustomData.cs
- FacetEnabledSchemaElement.cs
- RegexWorker.cs
- OracleTimeSpan.cs
- NextPreviousPagerField.cs
- Line.cs
- DataObjectSettingDataEventArgs.cs
- GeneralTransformGroup.cs
- SpellerInterop.cs
- HttpCacheParams.cs
- LostFocusEventManager.cs
- ManipulationDeltaEventArgs.cs
- DocumentPageView.cs
- IdentityHolder.cs
- ValidatedControlConverter.cs
- ZipIOFileItemStream.cs
- EncoderExceptionFallback.cs
- EventTrigger.cs
- XmlCharType.cs
- Unit.cs
- ProtocolElementCollection.cs
- BrowserDefinitionCollection.cs
- HotSpot.cs
- MarkupObject.cs
- PagesChangedEventArgs.cs
- TextUtf8RawTextWriter.cs
- CompilerHelpers.cs
- RowUpdatingEventArgs.cs
- FontSource.cs
- FilteredSchemaElementLookUpTable.cs
- DataGridRowHeaderAutomationPeer.cs
- DiscoveryServiceExtension.cs
- FormattedTextSymbols.cs
- GroupBoxDesigner.cs
- Registry.cs
- DropSource.cs
- Point3DKeyFrameCollection.cs
- Sql8ConformanceChecker.cs
- Throw.cs
- SemaphoreSlim.cs
- SiteMembershipCondition.cs
- MatrixStack.cs
- HtmlControlAdapter.cs
- InstanceDescriptor.cs
- ProfilePropertySettingsCollection.cs
- Privilege.cs
- EntityViewContainer.cs
- XmlMapping.cs
- DrawingCollection.cs
- CompilerLocalReference.cs
- WindowsClaimSet.cs