Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- ResourceWriter.cs
- MetabaseServerConfig.cs
- FloaterParaClient.cs
- ComponentChangingEvent.cs
- TransformConverter.cs
- Helpers.cs
- PeerUnsafeNativeCryptMethods.cs
- SecurityManager.cs
- UnmanagedMemoryStream.cs
- InternalPermissions.cs
- SecurityTokenResolver.cs
- OleDbConnectionInternal.cs
- DodSequenceMerge.cs
- ActiveDocumentEvent.cs
- ExpressionBinding.cs
- ParameterElementCollection.cs
- ContainerSelectorActiveEvent.cs
- ProfileInfo.cs
- ObjectAnimationUsingKeyFrames.cs
- DeviceContext.cs
- GCHandleCookieTable.cs
- FileLogRecord.cs
- TemplatingOptionsDialog.cs
- PanelStyle.cs
- RelationshipEndCollection.cs
- IdentityHolder.cs
- HttpConfigurationContext.cs
- BitHelper.cs
- InvalidPrinterException.cs
- HttpCachePolicy.cs
- StringConverter.cs
- RawUIStateInputReport.cs
- ping.cs
- Size3D.cs
- SchemaDeclBase.cs
- QilExpression.cs
- ThemeConfigurationDialog.cs
- UnmanagedMarshal.cs
- ApplicationFileCodeDomTreeGenerator.cs
- SqlConnectionHelper.cs
- WmpBitmapDecoder.cs
- DataGridSortCommandEventArgs.cs
- ListViewAutomationPeer.cs
- WindowsSlider.cs
- EventHandlersStore.cs
- HandlerBase.cs
- BaseParagraph.cs
- LinkTarget.cs
- Clipboard.cs
- IsolatedStorageFilePermission.cs
- LifetimeManager.cs
- ContractDescription.cs
- DataObject.cs
- EnterpriseServicesHelper.cs
- CodeGenerator.cs
- hwndwrapper.cs
- ColorBlend.cs
- _OverlappedAsyncResult.cs
- BamlLocalizer.cs
- UIHelper.cs
- DrawToolTipEventArgs.cs
- Encoding.cs
- SessionParameter.cs
- Types.cs
- PolygonHotSpot.cs
- WebPartRestoreVerb.cs
- BinaryUtilClasses.cs
- CodeMemberMethod.cs
- NavigationPropertyAccessor.cs
- DynamicRendererThreadManager.cs
- UserControlParser.cs
- x509utils.cs
- PagedControl.cs
- PackageFilter.cs
- IteratorFilter.cs
- CodeParameterDeclarationExpression.cs
- EntityDataSourceQueryBuilder.cs
- TagPrefixInfo.cs
- DataGridTextBoxColumn.cs
- IndentedTextWriter.cs
- TiffBitmapEncoder.cs
- ZipPackage.cs
- EntityDataSourceDesigner.cs
- DefaultBindingPropertyAttribute.cs
- HierarchicalDataSourceControl.cs
- WebResourceAttribute.cs
- DispatcherOperation.cs
- RowUpdatingEventArgs.cs
- BitmapEffectGeneralTransform.cs
- DebugHandleTracker.cs
- TdsRecordBufferSetter.cs
- CannotUnloadAppDomainException.cs
- HttpDebugHandler.cs
- PackUriHelper.cs
- WinInet.cs
- GradientBrush.cs
- PersonalizableTypeEntry.cs
- SingleQueryOperator.cs
- ControlBindingsCollection.cs
- HttpCookie.cs