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
- prompt.cs
- ChildrenQuery.cs
- ErrorStyle.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- DisposableCollectionWrapper.cs
- EventMappingSettings.cs
- XPathBinder.cs
- TypedDataSourceCodeGenerator.cs
- URLAttribute.cs
- Single.cs
- DrawingServices.cs
- IPipelineRuntime.cs
- DurableEnlistmentState.cs
- ActivityXRefPropertyEditor.cs
- CngKey.cs
- LinqDataSourceContextEventArgs.cs
- DependencyPropertyConverter.cs
- CodeLabeledStatement.cs
- SHA256Managed.cs
- CheckoutException.cs
- HealthMonitoringSection.cs
- ReachPageContentCollectionSerializerAsync.cs
- PermissionSetEnumerator.cs
- entityreference_tresulttype.cs
- IProvider.cs
- HScrollBar.cs
- TextBoxBase.cs
- WsdlWriter.cs
- ValueSerializerAttribute.cs
- WindowsTreeView.cs
- SocketInformation.cs
- ListView.cs
- CacheHelper.cs
- MetroSerializationManager.cs
- datacache.cs
- MembershipPasswordException.cs
- NetworkAddressChange.cs
- PkcsUtils.cs
- AdPostCacheSubstitution.cs
- CheckBoxPopupAdapter.cs
- DictionaryContent.cs
- HealthMonitoringSectionHelper.cs
- XmlNode.cs
- AbsoluteQuery.cs
- NetTcpBindingCollectionElement.cs
- TextSpanModifier.cs
- WindowsRegion.cs
- DataSourceIDConverter.cs
- SqlDuplicator.cs
- ArrayExtension.cs
- FontWeights.cs
- RijndaelCryptoServiceProvider.cs
- TabControlEvent.cs
- ConnectAlgorithms.cs
- IdleTimeoutMonitor.cs
- WindowsSecurityToken.cs
- DictionaryEntry.cs
- InputLanguageManager.cs
- DataBoundControlAdapter.cs
- CryptoApi.cs
- FaultImportOptions.cs
- WorkflowTerminatedException.cs
- SubclassTypeValidatorAttribute.cs
- ResolvePPIDRequest.cs
- NavigationProgressEventArgs.cs
- Mappings.cs
- CompilationRelaxations.cs
- UserControl.cs
- ParallelEnumerableWrapper.cs
- HandleValueEditor.cs
- StylusEventArgs.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- TableAdapterManagerGenerator.cs
- FatalException.cs
- ListBoxAutomationPeer.cs
- AttachmentCollection.cs
- SessionEndedEventArgs.cs
- CqlLexer.cs
- TypeNameConverter.cs
- UriWriter.cs
- TranslateTransform.cs
- ServiceCredentialsElement.cs
- NodeFunctions.cs
- WsatRegistrationHeader.cs
- WsatAdminException.cs
- TextRangeEditTables.cs
- ColumnCollectionEditor.cs
- WebPartsSection.cs
- ItemCollection.cs
- LookupBindingPropertiesAttribute.cs
- ServiceSecurityAuditBehavior.cs
- PersonalizationStateInfoCollection.cs
- ListBindableAttribute.cs
- ApplicationGesture.cs
- Thread.cs
- TextRangeBase.cs
- StringKeyFrameCollection.cs
- DataGridViewHitTestInfo.cs
- TreeNodeEventArgs.cs
- EtwTrackingBehaviorElement.cs