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
- EntityReference.cs
- TransportSecurityBindingElement.cs
- OdbcEnvironmentHandle.cs
- XmlNotation.cs
- HMACMD5.cs
- localization.cs
- RegistryPermission.cs
- UIElementParagraph.cs
- MetadataItem_Static.cs
- SmiConnection.cs
- SHA384Cng.cs
- PassportIdentity.cs
- tooltip.cs
- GraphicsPathIterator.cs
- LineGeometry.cs
- DataSourceCache.cs
- Selector.cs
- FlagsAttribute.cs
- SystemWebCachingSectionGroup.cs
- ContainerFilterService.cs
- UriTemplateVariablePathSegment.cs
- FixedPageAutomationPeer.cs
- ReverseInheritProperty.cs
- DataGridParentRows.cs
- mongolianshape.cs
- BuildManager.cs
- ServicePointManagerElement.cs
- TreeNode.cs
- InternalCache.cs
- Clipboard.cs
- BufferedMessageWriter.cs
- SoapSchemaExporter.cs
- ValueType.cs
- MultipartIdentifier.cs
- SynchronousChannelMergeEnumerator.cs
- FontStyle.cs
- ArrayList.cs
- OwnerDrawPropertyBag.cs
- FragmentQueryProcessor.cs
- DomainConstraint.cs
- Vector3DCollectionConverter.cs
- ToolStripLocationCancelEventArgs.cs
- BamlBinaryReader.cs
- HebrewNumber.cs
- ComEventsSink.cs
- PersonalizationStateQuery.cs
- ClassDataContract.cs
- ServiceMetadataBehavior.cs
- ModifiableIteratorCollection.cs
- LexicalChunk.cs
- SuppressMergeCheckAttribute.cs
- Compiler.cs
- JsonReaderDelegator.cs
- EntitySetRetriever.cs
- SqlFacetAttribute.cs
- baseaxisquery.cs
- BulletedList.cs
- IDReferencePropertyAttribute.cs
- ColumnMapVisitor.cs
- HttpApplicationStateWrapper.cs
- sqlmetadatafactory.cs
- MemberInfoSerializationHolder.cs
- SqlBuilder.cs
- TextDecorationCollectionConverter.cs
- BinaryObjectReader.cs
- EntityDataSourceContainerNameItem.cs
- DelegateSerializationHolder.cs
- SmiContextFactory.cs
- MultipleViewPattern.cs
- RequestSecurityTokenForGetBrowserToken.cs
- PhysicalOps.cs
- PlaceHolder.cs
- MethodSignatureGenerator.cs
- Queue.cs
- RoutingChannelExtension.cs
- SctClaimSerializer.cs
- CreationContext.cs
- ManualResetEventSlim.cs
- SecurityManager.cs
- TTSVoice.cs
- Base64Encoder.cs
- CodeRegionDirective.cs
- WebPartDeleteVerb.cs
- Section.cs
- EventMappingSettingsCollection.cs
- PropertyEmitter.cs
- Registry.cs
- DomNameTable.cs
- DocumentReferenceCollection.cs
- QueryCursorEventArgs.cs
- ManualResetEvent.cs
- MruCache.cs
- ConnectorMovedEventArgs.cs
- NotifyParentPropertyAttribute.cs
- AccessText.cs
- CheckBoxRenderer.cs
- VerificationException.cs
- BrowserDefinition.cs
- EnumerableCollectionView.cs
- SchemaTableOptionalColumn.cs