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
- ProfileService.cs
- ErrorHandler.cs
- MatrixAnimationUsingPath.cs
- UrlMapping.cs
- CommandValueSerializer.cs
- DurationConverter.cs
- XPathNodeHelper.cs
- AudioFormatConverter.cs
- JobDuplex.cs
- TypeSystem.cs
- XmlFormatMapping.cs
- JavaScriptObjectDeserializer.cs
- CanonicalFormWriter.cs
- WebMessageEncodingElement.cs
- ProjectionPruner.cs
- Interlocked.cs
- HttpCookieCollection.cs
- ImageClickEventArgs.cs
- SoapIgnoreAttribute.cs
- SystemColorTracker.cs
- SspiSafeHandles.cs
- AuthenticationException.cs
- ContourSegment.cs
- ConstraintStruct.cs
- SortedDictionary.cs
- ReflectionHelper.cs
- GridViewUpdatedEventArgs.cs
- CodeExporter.cs
- ProxyBuilder.cs
- DBSqlParserColumnCollection.cs
- OperationAbortedException.cs
- XpsPartBase.cs
- versioninfo.cs
- DataGridRowClipboardEventArgs.cs
- SessionParameter.cs
- XPathDocumentNavigator.cs
- FunctionParameter.cs
- DictionaryCustomTypeDescriptor.cs
- SnapshotChangeTrackingStrategy.cs
- CaseInsensitiveComparer.cs
- Matrix.cs
- InteropBitmapSource.cs
- PersistChildrenAttribute.cs
- TypeInitializationException.cs
- future.cs
- XmlMemberMapping.cs
- ProgressBarRenderer.cs
- LineGeometry.cs
- SamlAuthorizationDecisionStatement.cs
- SchemaObjectWriter.cs
- PropertyManager.cs
- Geometry3D.cs
- SimpleHandlerBuildProvider.cs
- GorillaCodec.cs
- Focus.cs
- PackWebResponse.cs
- Point4DConverter.cs
- StrokeDescriptor.cs
- SocketException.cs
- DupHandleConnectionReader.cs
- RadioButtonFlatAdapter.cs
- SortDescription.cs
- DataStreams.cs
- SafeNativeMethodsMilCoreApi.cs
- GridViewCommandEventArgs.cs
- MetadataUtilsSmi.cs
- TransactionChannelListener.cs
- WithStatement.cs
- JulianCalendar.cs
- MsmqIntegrationProcessProtocolHandler.cs
- SaveFileDialogDesigner.cs
- SelectedDatesCollection.cs
- DiscreteKeyFrames.cs
- XpsImage.cs
- AppDomainManager.cs
- AliasGenerator.cs
- WebServiceTypeData.cs
- OleDbError.cs
- FixedDocument.cs
- DynamicQueryableWrapper.cs
- XmlSchemaIdentityConstraint.cs
- EntityDataReader.cs
- TrackBarRenderer.cs
- XamlFxTrace.cs
- TrackingProfileSerializer.cs
- SequentialUshortCollection.cs
- DelegateBodyWriter.cs
- DocumentPaginator.cs
- CompositeActivityTypeDescriptorProvider.cs
- Models.cs
- SID.cs
- querybuilder.cs
- MessagePartSpecification.cs
- UnSafeCharBuffer.cs
- MetadataSerializer.cs
- ValueChangedEventManager.cs
- AppDomain.cs
- CookieProtection.cs
- NameValueCollection.cs
- AssemblyAssociatedContentFileAttribute.cs