Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- TransformDescriptor.cs
- ScaleTransform3D.cs
- ActivityBuilderHelper.cs
- ConfigurationSectionCollection.cs
- IisTraceListener.cs
- UrlPath.cs
- SHA1.cs
- ConfigurationConverterBase.cs
- TraceData.cs
- UIElementParaClient.cs
- ProviderCommandInfoUtils.cs
- CustomAttributeBuilder.cs
- WinFormsSpinner.cs
- Stream.cs
- TableDetailsRow.cs
- TraversalRequest.cs
- OleDbParameterCollection.cs
- DataMemberListEditor.cs
- GridItemCollection.cs
- CacheModeConverter.cs
- SimpleApplicationHost.cs
- ValidationEventArgs.cs
- IndexedString.cs
- OverrideMode.cs
- AdapterDictionary.cs
- ThreadInterruptedException.cs
- Vector3DCollectionConverter.cs
- DataDocumentXPathNavigator.cs
- ArrayList.cs
- TypeUsage.cs
- HandledMouseEvent.cs
- HTMLTextWriter.cs
- SendMailErrorEventArgs.cs
- RuntimeConfigLKG.cs
- mongolianshape.cs
- NullableLongMinMaxAggregationOperator.cs
- SparseMemoryStream.cs
- LowerCaseStringConverter.cs
- XmlCountingReader.cs
- LogLogRecordEnumerator.cs
- StateManagedCollection.cs
- ConfigurationSectionCollection.cs
- CategoryGridEntry.cs
- Operator.cs
- BasicHttpMessageSecurityElement.cs
- Transform3DGroup.cs
- DataGridColumnEventArgs.cs
- SmtpSection.cs
- SelectionRange.cs
- BuildProviderUtils.cs
- BrowserCapabilitiesCompiler.cs
- XmlWriterSettings.cs
- RegexCompiler.cs
- FusionWrap.cs
- PerformanceCounter.cs
- HelpProvider.cs
- CompoundFileDeflateTransform.cs
- SQLBytesStorage.cs
- SmtpNtlmAuthenticationModule.cs
- RangeContentEnumerator.cs
- xdrvalidator.cs
- Stylesheet.cs
- GorillaCodec.cs
- PathFigureCollection.cs
- remotingproxy.cs
- PrintDocument.cs
- MenuAutoFormat.cs
- TextureBrush.cs
- GenericXmlSecurityToken.cs
- MiniCustomAttributeInfo.cs
- ScriptingRoleServiceSection.cs
- TextRange.cs
- IndentedWriter.cs
- BufferBuilder.cs
- CacheModeConverter.cs
- Registry.cs
- DataControlFieldCollection.cs
- FontConverter.cs
- MemberAccessException.cs
- CreateUserWizardDesigner.cs
- SchemaManager.cs
- DataPagerFieldCollection.cs
- WindowsEditBox.cs
- EditingCoordinator.cs
- PageParser.cs
- FormViewInsertedEventArgs.cs
- OutputCacheModule.cs
- ExceptionTrace.cs
- DataContractFormatAttribute.cs
- AssemblyHelper.cs
- Control.cs
- VisualStyleElement.cs
- ActivityDesigner.cs
- ComponentManagerBroker.cs
- WSDualHttpSecurityMode.cs
- Triplet.cs
- TCPClient.cs
- ResourceWriter.cs
- nulltextcontainer.cs
- CodeTypeReferenceCollection.cs