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
- SmiGettersStream.cs
- HttpFileCollection.cs
- String.cs
- Encoder.cs
- IImplicitResourceProvider.cs
- DataListItemEventArgs.cs
- LocalizeDesigner.cs
- _SafeNetHandles.cs
- AttributeInfo.cs
- Encoder.cs
- ByteKeyFrameCollection.cs
- FieldBuilder.cs
- _WinHttpWebProxyDataBuilder.cs
- PrivilegedConfigurationManager.cs
- CommonEndpointBehaviorElement.cs
- OleStrCAMarshaler.cs
- SelectorAutomationPeer.cs
- FlowNode.cs
- SiteMapProvider.cs
- SamlAuthorityBinding.cs
- NativeMethods.cs
- ExpressionBindingCollection.cs
- NamespaceEmitter.cs
- ParallelTimeline.cs
- HttpApplicationFactory.cs
- EncoderExceptionFallback.cs
- WebPartCatalogCloseVerb.cs
- RootAction.cs
- ElementNotEnabledException.cs
- SQLInt16Storage.cs
- columnmapkeybuilder.cs
- WebServiceTypeData.cs
- MessageDecoder.cs
- PropertyBuilder.cs
- TextProperties.cs
- RSATokenProvider.cs
- Properties.cs
- SchemaNotation.cs
- RemotingConfigParser.cs
- SvcMapFileLoader.cs
- WebConfigurationManager.cs
- Border.cs
- WorkerRequest.cs
- SelfIssuedAuthAsymmetricKey.cs
- Assert.cs
- RangeEnumerable.cs
- PrintDialogException.cs
- ConfigurationValidatorAttribute.cs
- BitmapEffectvisualstate.cs
- IdentitySection.cs
- XNodeNavigator.cs
- PrimaryKeyTypeConverter.cs
- RadialGradientBrush.cs
- DependencyObjectType.cs
- MediaElementAutomationPeer.cs
- IisTraceListener.cs
- SoapAttributes.cs
- RootProfilePropertySettingsCollection.cs
- OutputCacheSettingsSection.cs
- PackageProperties.cs
- PngBitmapDecoder.cs
- PageFunction.cs
- DynamicRenderer.cs
- SchemaConstraints.cs
- NativeObjectSecurity.cs
- DirectoryInfo.cs
- EmissiveMaterial.cs
- SocketException.cs
- CssStyleCollection.cs
- HttpModule.cs
- ContextStack.cs
- DelegateSerializationHolder.cs
- MachineKeyConverter.cs
- MD5.cs
- StreamGeometry.cs
- CheckBoxList.cs
- HiddenFieldPageStatePersister.cs
- SchemaType.cs
- XPathDocumentNavigator.cs
- PersonalizationStateInfo.cs
- BmpBitmapDecoder.cs
- DelegateArgumentReference.cs
- DeleteIndexBinder.cs
- Label.cs
- CombinedTcpChannel.cs
- XmlSchemaChoice.cs
- LocatorManager.cs
- SystemIPGlobalProperties.cs
- DbCommandTree.cs
- CompiledIdentityConstraint.cs
- CacheForPrimitiveTypes.cs
- OptionalColumn.cs
- CodeMemberProperty.cs
- MimeTextImporter.cs
- AmbientLight.cs
- BindingCollection.cs
- TargetControlTypeAttribute.cs
- DocumentApplicationJournalEntry.cs
- SerializableAttribute.cs
- AssemblyAssociatedContentFileAttribute.cs