Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- VoiceSynthesis.cs
- CryptoApi.cs
- WorkItem.cs
- PropertyOrder.cs
- ReadContentAsBinaryHelper.cs
- SqlParameter.cs
- ObjectDataSourceStatusEventArgs.cs
- QilParameter.cs
- StreamInfo.cs
- PagePropertiesChangingEventArgs.cs
- SafeNativeMethods.cs
- ClientSettingsSection.cs
- TextParaClient.cs
- DateTimeParse.cs
- ContextQuery.cs
- RoleManagerEventArgs.cs
- AccessKeyManager.cs
- SelectedDatesCollection.cs
- DynamicMetaObject.cs
- TemplateBamlTreeBuilder.cs
- RSACryptoServiceProvider.cs
- XmlDocument.cs
- _Events.cs
- XNodeValidator.cs
- CodeSubDirectory.cs
- propertyentry.cs
- BasePattern.cs
- EntityObject.cs
- TextAdaptor.cs
- DataKeyCollection.cs
- GeneralTransform3DGroup.cs
- DetailsView.cs
- ContentElementAutomationPeer.cs
- XmlUrlEditor.cs
- DbProviderFactoriesConfigurationHandler.cs
- TreeIterator.cs
- Crypto.cs
- AnnotationHelper.cs
- CodeDomComponentSerializationService.cs
- SrgsDocument.cs
- DataGridPreparingCellForEditEventArgs.cs
- ExceptionUtility.cs
- ObjectCloneHelper.cs
- Viewport2DVisual3D.cs
- DataGridViewAdvancedBorderStyle.cs
- SQLBytesStorage.cs
- BindingsCollection.cs
- TableDetailsCollection.cs
- TransformerInfo.cs
- SmtpNetworkElement.cs
- CodeChecksumPragma.cs
- TraceHandlerErrorFormatter.cs
- StringWriter.cs
- XmlTextWriter.cs
- DelegatedStream.cs
- Zone.cs
- StringKeyFrameCollection.cs
- HtmlInputControl.cs
- FamilyTypefaceCollection.cs
- NavigationPropertyEmitter.cs
- Matrix.cs
- ShaperBuffers.cs
- UTF8Encoding.cs
- SemanticValue.cs
- MultiByteCodec.cs
- TextServicesCompartment.cs
- AttachedPropertyBrowsableAttribute.cs
- DataObject.cs
- Validator.cs
- CqlQuery.cs
- ConfigurationStrings.cs
- XpsFontSubsetter.cs
- GridViewRowCollection.cs
- PathTooLongException.cs
- FixedSOMSemanticBox.cs
- AvTraceDetails.cs
- ResourceFallbackManager.cs
- OraclePermission.cs
- SelfIssuedAuthProofToken.cs
- Crc32Helper.cs
- OleCmdHelper.cs
- AssemblyNameProxy.cs
- XmlDataCollection.cs
- LoadWorkflowCommand.cs
- FunctionImportElement.cs
- OperandQuery.cs
- EventToken.cs
- ScopelessEnumAttribute.cs
- EventDescriptorCollection.cs
- InputChannel.cs
- WorkflowMarkupSerializationProvider.cs
- TableProviderWrapper.cs
- XmlSchemaSimpleTypeUnion.cs
- UInt32Storage.cs
- KeyEvent.cs
- MediaTimeline.cs
- OutputCacheProfileCollection.cs
- LockCookie.cs
- peernodeimplementation.cs
- ConfigurationSettings.cs