Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- LoginCancelEventArgs.cs
- TabItem.cs
- ActivityMetadata.cs
- CompositeActivityDesigner.cs
- ObjectDataSourceFilteringEventArgs.cs
- HttpRequestCacheValidator.cs
- QueryResult.cs
- Enum.cs
- DataSetUtil.cs
- RuntimeComponentFilter.cs
- SpellCheck.cs
- DispatchOperation.cs
- TextTreeObjectNode.cs
- TreeViewDesigner.cs
- XmlReflectionImporter.cs
- StringConcat.cs
- AdPostCacheSubstitution.cs
- EventDriven.cs
- CurrentChangedEventManager.cs
- FieldNameLookup.cs
- AndCondition.cs
- IndicShape.cs
- StringCollection.cs
- IgnoreFlushAndCloseStream.cs
- SingleAnimationUsingKeyFrames.cs
- KoreanCalendar.cs
- HtmlInputReset.cs
- BrowsableAttribute.cs
- ReadOnlyNameValueCollection.cs
- XmlSchemaSequence.cs
- CommandHelper.cs
- SortedList.cs
- WebBrowserHelper.cs
- MatrixAnimationUsingKeyFrames.cs
- BaseComponentEditor.cs
- ConfigurationSchemaErrors.cs
- SafePEFileHandle.cs
- XpsImageSerializationService.cs
- LineVisual.cs
- PackageDigitalSignature.cs
- NativeDirectoryServicesQueryAPIs.cs
- WebPartZoneBaseDesigner.cs
- PreviewPageInfo.cs
- VBCodeProvider.cs
- WhitespaceRuleReader.cs
- PathTooLongException.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- ResXResourceReader.cs
- BufferAllocator.cs
- MD5CryptoServiceProvider.cs
- EventLogInternal.cs
- SwitchLevelAttribute.cs
- SqlConnectionString.cs
- UserPersonalizationStateInfo.cs
- DynamicILGenerator.cs
- util.cs
- TypeDelegator.cs
- MasterPageParser.cs
- Schema.cs
- SqlMethodAttribute.cs
- FigureHelper.cs
- HTMLTagNameToTypeMapper.cs
- StrongNameUtility.cs
- wgx_exports.cs
- QueryGeneratorBase.cs
- ExpressionEditorAttribute.cs
- SQLSingle.cs
- CmsInterop.cs
- ResolveMatchesMessage11.cs
- __FastResourceComparer.cs
- AssemblyNameProxy.cs
- FormViewInsertEventArgs.cs
- ValueExpressions.cs
- MenuItemStyleCollection.cs
- CollectionViewSource.cs
- DesignerLoader.cs
- AuthorizationRule.cs
- updatecommandorderer.cs
- Camera.cs
- JulianCalendar.cs
- ServiceOperationDetailViewControl.cs
- RouteCollection.cs
- WinCategoryAttribute.cs
- LineVisual.cs
- ScriptDescriptor.cs
- TemplateKeyConverter.cs
- XPathNode.cs
- DataGridViewSelectedRowCollection.cs
- SourceCollection.cs
- PrintingPermissionAttribute.cs
- SqlTypesSchemaImporter.cs
- HostedNamedPipeTransportManager.cs
- HyperLinkField.cs
- SqlError.cs
- ObjectDataSourceEventArgs.cs
- MouseGestureConverter.cs
- ReadWriteObjectLock.cs
- AudioFormatConverter.cs
- DesignerAdapterUtil.cs
- Animatable.cs