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
- XamlSerializerUtil.cs
- Stopwatch.cs
- ComboBoxItem.cs
- CompositeCollection.cs
- DocumentOrderQuery.cs
- XamlSerializerUtil.cs
- PolicyImporterElementCollection.cs
- ElementHostAutomationPeer.cs
- PartialCachingControl.cs
- DefaultValueAttribute.cs
- EntityCommandExecutionException.cs
- DbReferenceCollection.cs
- LassoHelper.cs
- DbProviderFactory.cs
- ProvidersHelper.cs
- PEFileEvidenceFactory.cs
- IntSecurity.cs
- HttpServerVarsCollection.cs
- XmlDataProvider.cs
- DefaultConfirmation.cs
- ComAwareEventInfo.cs
- ScriptModule.cs
- StructuralType.cs
- ResponseStream.cs
- WindowsGraphics.cs
- SBCSCodePageEncoding.cs
- OdbcConnectionPoolProviderInfo.cs
- OrderingExpression.cs
- SymbolTable.cs
- SchemaCollectionCompiler.cs
- DbLambda.cs
- PersistenceTypeAttribute.cs
- WindowsListViewScroll.cs
- RootBrowserWindow.cs
- BatchParser.cs
- LogWriteRestartAreaAsyncResult.cs
- WinInetCache.cs
- MergablePropertyAttribute.cs
- InputLanguageSource.cs
- FieldDescriptor.cs
- XmlDomTextWriter.cs
- ExpressionConverter.cs
- RootBrowserWindowAutomationPeer.cs
- DataObjectMethodAttribute.cs
- CrossSiteScriptingValidation.cs
- ZoneLinkButton.cs
- ObjectManager.cs
- FocusManager.cs
- FillErrorEventArgs.cs
- WebPermission.cs
- MarkupExtensionParser.cs
- MissingSatelliteAssemblyException.cs
- SqlDataSourceStatusEventArgs.cs
- dtdvalidator.cs
- DropShadowBitmapEffect.cs
- FuncCompletionCallbackWrapper.cs
- ZipArchive.cs
- ClientUriBehavior.cs
- RectangleGeometry.cs
- Point3DValueSerializer.cs
- WebPartTracker.cs
- XsltLoader.cs
- _DomainName.cs
- InvalidDataException.cs
- PropertiesTab.cs
- ExpanderAutomationPeer.cs
- SHA256Managed.cs
- UnauthorizedWebPart.cs
- ClassImporter.cs
- DataServiceResponse.cs
- SqlAggregateChecker.cs
- Thumb.cs
- Material.cs
- FrugalList.cs
- KeySplineConverter.cs
- CheckBox.cs
- NumberFunctions.cs
- LayoutExceptionEventArgs.cs
- HandlerBase.cs
- SqlMethods.cs
- PolygonHotSpot.cs
- DataGridViewSelectedRowCollection.cs
- AuthorizationPolicyTypeElement.cs
- EntryPointNotFoundException.cs
- MediaSystem.cs
- DefaultObjectMappingItemCollection.cs
- EdgeModeValidation.cs
- StringFreezingAttribute.cs
- ComplexLine.cs
- PointAnimationClockResource.cs
- RC2.cs
- CodeGenerator.cs
- QueryComponents.cs
- WindowsSpinner.cs
- RegexTree.cs
- UrlParameterWriter.cs
- PropertyValidationContext.cs
- GlyphingCache.cs
- AutoResizedEvent.cs
- HttpPostedFileWrapper.cs