Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TraceListener.cs
- AuthenticationModuleElementCollection.cs
- CryptoStream.cs
- MembershipValidatePasswordEventArgs.cs
- CustomAttributeFormatException.cs
- ComboBox.cs
- Schedule.cs
- DBCommand.cs
- ProtocolViolationException.cs
- RuntimeHelpers.cs
- WorkflowRuntimeService.cs
- DrawingGroup.cs
- TraceEventCache.cs
- WebPartChrome.cs
- TriState.cs
- HttpListener.cs
- ProcessStartInfo.cs
- GlobalProxySelection.cs
- RawMouseInputReport.cs
- OleDbMetaDataFactory.cs
- TransactionState.cs
- TextElementAutomationPeer.cs
- CustomError.cs
- SecurityDescriptor.cs
- DecoderBestFitFallback.cs
- EdmFunctionAttribute.cs
- SwitchElementsCollection.cs
- DrawingImage.cs
- RemotingAttributes.cs
- OLEDB_Enum.cs
- EntityTypeEmitter.cs
- MarkedHighlightComponent.cs
- IgnoreFileBuildProvider.cs
- StreamGeometry.cs
- TextDecorationCollectionConverter.cs
- BitmapEffectvisualstate.cs
- WindowsPen.cs
- OrderedDictionary.cs
- SystemWebCachingSectionGroup.cs
- DataControlFieldCollection.cs
- VersionUtil.cs
- HuffmanTree.cs
- WebPartVerbCollection.cs
- ServiceOperation.cs
- ChangePasswordAutoFormat.cs
- PathStreamGeometryContext.cs
- PropertySet.cs
- QilStrConcat.cs
- SplineKeyFrames.cs
- Rotation3DAnimation.cs
- DetailsViewModeEventArgs.cs
- BindingExpression.cs
- TcpChannelHelper.cs
- EmptyEnumerator.cs
- GeometryCombineModeValidation.cs
- AggregateNode.cs
- AnnotationObservableCollection.cs
- WorkerRequest.cs
- UnsafeNativeMethods.cs
- CatalogPartChrome.cs
- HttpTransportSecurity.cs
- Path.cs
- TcpTransportBindingElement.cs
- DBBindings.cs
- IPCCacheManager.cs
- Repeater.cs
- AdRotator.cs
- _NTAuthentication.cs
- BindingOperations.cs
- DataGridTable.cs
- PageTextBox.cs
- DefaultValueMapping.cs
- InputLanguageSource.cs
- ViewStateModeByIdAttribute.cs
- FixedTextView.cs
- DocumentPage.cs
- FilteredAttributeCollection.cs
- BasePattern.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- HandlerBase.cs
- WaitForChangedResult.cs
- InteropAutomationProvider.cs
- SqlRemoveConstantOrderBy.cs
- VirtualPath.cs
- PingOptions.cs
- Processor.cs
- PatternMatcher.cs
- CopyOnWriteList.cs
- FixedSOMPageElement.cs
- TaskExtensions.cs
- ConfigurationStrings.cs
- KnownBoxes.cs
- HeaderCollection.cs
- StubHelpers.cs
- EventLogEntry.cs
- ComponentRenameEvent.cs
- TraceListener.cs
- InfoCardTraceRecord.cs
- WebServiceReceive.cs
- ExpanderAutomationPeer.cs