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
- DiscreteKeyFrames.cs
- SafeLibraryHandle.cs
- Int64KeyFrameCollection.cs
- XmlWriterSettings.cs
- HtmlLinkAdapter.cs
- MouseGestureValueSerializer.cs
- WindowsIdentity.cs
- Group.cs
- Psha1DerivedKeyGenerator.cs
- ResizeBehavior.cs
- WebConfigurationManager.cs
- NamespaceInfo.cs
- TypedTableBaseExtensions.cs
- xdrvalidator.cs
- TextTreeInsertUndoUnit.cs
- SQLBoolean.cs
- DataControlFieldCollection.cs
- InternalResources.cs
- ReachVisualSerializer.cs
- StylusDevice.cs
- Style.cs
- SafeArchiveContext.cs
- Gdiplus.cs
- Geometry.cs
- TemplateControl.cs
- _OverlappedAsyncResult.cs
- EntitySetBase.cs
- SafeCertificateContext.cs
- XmlArrayItemAttributes.cs
- PagedDataSource.cs
- ContentFilePart.cs
- ViewCellRelation.cs
- CountAggregationOperator.cs
- AuthenticatingEventArgs.cs
- WCFServiceClientProxyGenerator.cs
- CurrentTimeZone.cs
- HTTPNotFoundHandler.cs
- SchemaTableColumn.cs
- Int64Converter.cs
- TextElementEnumerator.cs
- FileSystemWatcher.cs
- TableNameAttribute.cs
- ObjectListGeneralPage.cs
- CodeMethodInvokeExpression.cs
- ScriptReferenceBase.cs
- TextElementEnumerator.cs
- ProfileProvider.cs
- Scripts.cs
- DataSetSchema.cs
- BindingEntityInfo.cs
- SystemThemeKey.cs
- XmlSchemaComplexContentExtension.cs
- FlowLayoutSettings.cs
- HttpResponse.cs
- X509SubjectKeyIdentifierClause.cs
- TransformerTypeCollection.cs
- COM2IProvidePropertyBuilderHandler.cs
- DoubleCollectionValueSerializer.cs
- Typeface.cs
- IOException.cs
- Registry.cs
- TextBounds.cs
- ISAPIApplicationHost.cs
- WebZoneDesigner.cs
- CqlWriter.cs
- PageThemeParser.cs
- ValueTable.cs
- TdsParserSafeHandles.cs
- TabletDevice.cs
- NameTable.cs
- ExpressionValueEditor.cs
- WebPageTraceListener.cs
- BitmapCache.cs
- GridViewDeletedEventArgs.cs
- ViewCellSlot.cs
- FilteredSchemaElementLookUpTable.cs
- SymDocumentType.cs
- PlainXmlDeserializer.cs
- TaskFormBase.cs
- ConfigurationPropertyCollection.cs
- NavigationPropertyEmitter.cs
- Renderer.cs
- GPStream.cs
- StorageEntitySetMapping.cs
- KeyInfo.cs
- EpmContentSerializer.cs
- SimpleMailWebEventProvider.cs
- HttpWriter.cs
- TailCallAnalyzer.cs
- PageAsyncTask.cs
- EmbeddedMailObjectsCollection.cs
- ListViewUpdatedEventArgs.cs
- COM2ColorConverter.cs
- QueueProcessor.cs
- SoapHttpTransportImporter.cs
- AnnotationObservableCollection.cs
- FrameworkRichTextComposition.cs
- XmlHierarchyData.cs
- RtfControls.cs
- XmlResolver.cs