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
- Vector3DCollectionValueSerializer.cs
- CatalogPartCollection.cs
- DropTarget.cs
- CultureSpecificCharacterBufferRange.cs
- StaticDataManager.cs
- CalloutQueueItem.cs
- DataListCommandEventArgs.cs
- CapabilitiesState.cs
- loginstatus.cs
- HwndSource.cs
- SqlFactory.cs
- PeerApplicationLaunchInfo.cs
- NetDataContractSerializer.cs
- httpstaticobjectscollection.cs
- RowType.cs
- TablePattern.cs
- Sql8ExpressionRewriter.cs
- ObjectConverter.cs
- EntityDescriptor.cs
- MetabaseServerConfig.cs
- ExecutionProperties.cs
- IsolatedStorageFilePermission.cs
- XmlSerializationReader.cs
- InstanceStoreQueryResult.cs
- HttpServerVarsCollection.cs
- SecurityContext.cs
- CustomExpression.cs
- DeploymentExceptionMapper.cs
- _Rfc2616CacheValidators.cs
- AbsoluteQuery.cs
- DataGridViewIntLinkedList.cs
- EventDescriptor.cs
- TextServicesHost.cs
- DCSafeHandle.cs
- SerialErrors.cs
- DrawingState.cs
- QueueProcessor.cs
- FormViewDesigner.cs
- PictureBox.cs
- ServiceNameElement.cs
- TextServicesDisplayAttribute.cs
- ArgumentReference.cs
- EntityConnectionStringBuilder.cs
- TextElement.cs
- SystemFonts.cs
- SQlBooleanStorage.cs
- PieceDirectory.cs
- XmlTypeMapping.cs
- Lasso.cs
- TraceLevelStore.cs
- BinaryObjectWriter.cs
- SqlBuilder.cs
- SortKey.cs
- DataGrid.cs
- TypeConverterMarkupExtension.cs
- ProcessManager.cs
- ReliableMessagingHelpers.cs
- CreateRefExpr.cs
- InvokeMethodActivityDesigner.cs
- SynchronizedPool.cs
- XmlSerializationWriter.cs
- IPHostEntry.cs
- MediaTimeline.cs
- JournalEntryListConverter.cs
- HandoffBehavior.cs
- DateTimeParse.cs
- SimpleTypeResolver.cs
- ErrorHandler.cs
- SpotLight.cs
- TextDecorationLocationValidation.cs
- DataRowComparer.cs
- safelink.cs
- AttributeUsageAttribute.cs
- CapabilitiesRule.cs
- PreviewPageInfo.cs
- WorkerRequest.cs
- TemplateControl.cs
- ColorConvertedBitmap.cs
- Propagator.Evaluator.cs
- ItemCheckedEvent.cs
- ImplicitInputBrush.cs
- Page.cs
- ObjectDataSourceDisposingEventArgs.cs
- SpeakCompletedEventArgs.cs
- FullTextState.cs
- PagesSection.cs
- IndexerNameAttribute.cs
- WindowAutomationPeer.cs
- DifferencingCollection.cs
- ApplicationTrust.cs
- MasterPage.cs
- DbException.cs
- DataGridHelper.cs
- CollectionBase.cs
- ZipIOLocalFileDataDescriptor.cs
- OleDbError.cs
- TraceData.cs
- CharacterBufferReference.cs
- IntSecurity.cs
- AuthenticationService.cs