Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / MappingMetadataHelper.cs / 1305376 / MappingMetadataHelper.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Collections.Generic;
using System.Collections;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.Data.Mapping;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Data.Common.Utils;
using System.Collections.ObjectModel;
using System.Linq;
namespace System.Data.Metadata.Edm
{
///
/// Helps answer mapping questions since we don't have a good API for mapping information
///
internal static class MappingMetadataHelper
{
internal static IEnumerable GetMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType)
{
Debug.Assert(entityType != null, "EntityType parameter should not be null.");
StorageEntityContainerMapping containerMapping = GetEntityContainerMap(mappingCollection, container);
StorageSetMapping extentMap = containerMapping.GetSetMapping(entitySet.Name);
//The Set may have no mapping
if (extentMap != null)
{
//for each mapping fragment of Type we are interested in within the given set
//Check use of IsOfTypes in Code review
foreach (StorageTypeMapping typeMap in extentMap.TypeMappings.Where(map => map.Types.Union(map.IsOfTypes).Contains(entityType)))
{
yield return typeMap;
}
}
}
///
/// Returns all mapping fragments for the given entity set's types and their parent types.
///
internal static IEnumerable GetMappingsForEntitySetAndSuperTypes(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase childEntityType)
{
return MetadataHelper.GetTypeAndParentTypesOf(childEntityType, mappingCollection.EdmItemCollection, true /*includeAbstractTypes*/).SelectMany(
edmType =>
edmType.EdmEquals(childEntityType) ?
GetMappingsForEntitySetAndType(mappingCollection, container, entitySet, (edmType as EntityTypeBase))
: GetIsTypeOfMappingsForEntitySetAndType(mappingCollection, container, entitySet, (edmType as EntityTypeBase), childEntityType)
).ToList();
}
///
/// Returns mappings for the given set/type only if the mapping applies also to childEntittyType either via IsTypeOf or explicitly specifying multiple types in mapping fragments.
///
private static IEnumerable GetIsTypeOfMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType, EntityTypeBase childEntityType)
{
foreach (var mapping in GetMappingsForEntitySetAndType(mappingCollection, container, entitySet, entityType))
{
if (mapping.IsOfTypes.Any(parentType => parentType.IsAssignableFrom(childEntityType)) || mapping.Types.Contains(childEntityType))
{
yield return mapping;
}
}
}
internal static IEnumerable GetFunctionMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType)
{
StorageEntityContainerMapping containerMapping = GetEntityContainerMap(mappingCollection, container);
StorageSetMapping extentMap = containerMapping.GetSetMapping(entitySet.Name);
StorageEntitySetMapping entitySetMapping = extentMap as StorageEntitySetMapping;
//The Set may have no mapping
if (entitySetMapping != null)
{
if (entitySetMapping != null) //could be association set mapping
{
foreach (var v in entitySetMapping.FunctionMappings.Where(functionMap => functionMap.EntityType.Equals(entityType)))
{
yield return v;
}
}
}
}
internal static StorageEntityContainerMapping GetEntityContainerMap(StorageMappingItemCollection mappingCollection, EntityContainer entityContainer)
{
ReadOnlyCollection entityContainerMaps = mappingCollection.GetItems();
StorageEntityContainerMapping entityContainerMap = null;
foreach (StorageEntityContainerMapping map in entityContainerMaps)
{
if ((entityContainer.Equals(map.EdmEntityContainer))
|| (entityContainer.Equals(map.StorageEntityContainer)))
{
entityContainerMap = map;
break;
}
}
if (entityContainerMap == null)
{
throw new MappingException(System.Data.Entity.Strings.Mapping_NotFound_EntityContainer(entityContainer.Name));
}
return entityContainerMap;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Collections.Generic;
using System.Collections;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.Data.Mapping;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Data.Common.Utils;
using System.Collections.ObjectModel;
using System.Linq;
namespace System.Data.Metadata.Edm
{
///
/// Helps answer mapping questions since we don't have a good API for mapping information
///
internal static class MappingMetadataHelper
{
internal static IEnumerable GetMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType)
{
Debug.Assert(entityType != null, "EntityType parameter should not be null.");
StorageEntityContainerMapping containerMapping = GetEntityContainerMap(mappingCollection, container);
StorageSetMapping extentMap = containerMapping.GetSetMapping(entitySet.Name);
//The Set may have no mapping
if (extentMap != null)
{
//for each mapping fragment of Type we are interested in within the given set
//Check use of IsOfTypes in Code review
foreach (StorageTypeMapping typeMap in extentMap.TypeMappings.Where(map => map.Types.Union(map.IsOfTypes).Contains(entityType)))
{
yield return typeMap;
}
}
}
///
/// Returns all mapping fragments for the given entity set's types and their parent types.
///
internal static IEnumerable GetMappingsForEntitySetAndSuperTypes(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase childEntityType)
{
return MetadataHelper.GetTypeAndParentTypesOf(childEntityType, mappingCollection.EdmItemCollection, true /*includeAbstractTypes*/).SelectMany(
edmType =>
edmType.EdmEquals(childEntityType) ?
GetMappingsForEntitySetAndType(mappingCollection, container, entitySet, (edmType as EntityTypeBase))
: GetIsTypeOfMappingsForEntitySetAndType(mappingCollection, container, entitySet, (edmType as EntityTypeBase), childEntityType)
).ToList();
}
///
/// Returns mappings for the given set/type only if the mapping applies also to childEntittyType either via IsTypeOf or explicitly specifying multiple types in mapping fragments.
///
private static IEnumerable GetIsTypeOfMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType, EntityTypeBase childEntityType)
{
foreach (var mapping in GetMappingsForEntitySetAndType(mappingCollection, container, entitySet, entityType))
{
if (mapping.IsOfTypes.Any(parentType => parentType.IsAssignableFrom(childEntityType)) || mapping.Types.Contains(childEntityType))
{
yield return mapping;
}
}
}
internal static IEnumerable GetFunctionMappingsForEntitySetAndType(StorageMappingItemCollection mappingCollection, EntityContainer container, EntitySetBase entitySet, EntityTypeBase entityType)
{
StorageEntityContainerMapping containerMapping = GetEntityContainerMap(mappingCollection, container);
StorageSetMapping extentMap = containerMapping.GetSetMapping(entitySet.Name);
StorageEntitySetMapping entitySetMapping = extentMap as StorageEntitySetMapping;
//The Set may have no mapping
if (entitySetMapping != null)
{
if (entitySetMapping != null) //could be association set mapping
{
foreach (var v in entitySetMapping.FunctionMappings.Where(functionMap => functionMap.EntityType.Equals(entityType)))
{
yield return v;
}
}
}
}
internal static StorageEntityContainerMapping GetEntityContainerMap(StorageMappingItemCollection mappingCollection, EntityContainer entityContainer)
{
ReadOnlyCollection entityContainerMaps = mappingCollection.GetItems();
StorageEntityContainerMapping entityContainerMap = null;
foreach (StorageEntityContainerMapping map in entityContainerMaps)
{
if ((entityContainer.Equals(map.EdmEntityContainer))
|| (entityContainer.Equals(map.StorageEntityContainer)))
{
entityContainerMap = map;
break;
}
}
if (entityContainerMap == null)
{
throw new MappingException(System.Data.Entity.Strings.Mapping_NotFound_EntityContainer(entityContainer.Name));
}
return entityContainerMap;
}
}
}
// 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
- CommentEmitter.cs
- BevelBitmapEffect.cs
- Misc.cs
- PolicyImporterElement.cs
- DependencySource.cs
- ObjectDataSourceSelectingEventArgs.cs
- RouteCollection.cs
- _RequestCacheProtocol.cs
- ManagedWndProcTracker.cs
- CodeComment.cs
- PointUtil.cs
- DbProviderManifest.cs
- FieldDescriptor.cs
- TreeBuilder.cs
- HashHelpers.cs
- SoapReflector.cs
- ProgressBar.cs
- ListComponentEditor.cs
- AlphaSortedEnumConverter.cs
- FtpRequestCacheValidator.cs
- OdbcPermission.cs
- WpfGeneratedKnownTypes.cs
- GridToolTip.cs
- EnvelopedSignatureTransform.cs
- ReflectionPermission.cs
- ShapeTypeface.cs
- DataShape.cs
- WpfPayload.cs
- DataSourceHelper.cs
- ClosableStream.cs
- RouteItem.cs
- WrappedReader.cs
- RootAction.cs
- BamlReader.cs
- DataServiceRequestException.cs
- _LocalDataStore.cs
- ThreadStartException.cs
- CodeCompiler.cs
- XmlProcessingInstruction.cs
- StylusPointDescription.cs
- XmlValidatingReader.cs
- ISAPIWorkerRequest.cs
- FileDialog.cs
- IQueryable.cs
- ContextMenu.cs
- _CommandStream.cs
- Vector3DIndependentAnimationStorage.cs
- PropertyDescriptorCollection.cs
- MemberAccessException.cs
- PathGeometry.cs
- PeerNearMe.cs
- MetadataSerializer.cs
- InstancePersistenceCommand.cs
- Font.cs
- ToolboxComponentsCreatedEventArgs.cs
- AdapterDictionary.cs
- TdsRecordBufferSetter.cs
- XmlDataDocument.cs
- OdbcConnectionHandle.cs
- CompareInfo.cs
- Grant.cs
- SQLStringStorage.cs
- DocComment.cs
- MailAddressCollection.cs
- StateMachine.cs
- MappedMetaModel.cs
- StatusBar.cs
- ByteAnimationBase.cs
- RuntimeArgumentHandle.cs
- ISAPIRuntime.cs
- AncestorChangedEventArgs.cs
- MetadataCache.cs
- IncrementalReadDecoders.cs
- Task.cs
- DESCryptoServiceProvider.cs
- CqlQuery.cs
- SocketElement.cs
- HiddenFieldPageStatePersister.cs
- LifetimeServices.cs
- TdsParser.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ReflectionUtil.cs
- QilGenerator.cs
- FreezableDefaultValueFactory.cs
- CheckoutException.cs
- OperationContextScope.cs
- ExclusiveCanonicalizationTransform.cs
- CodeArrayIndexerExpression.cs
- FirewallWrapper.cs
- Rotation3DKeyFrameCollection.cs
- CircleHotSpot.cs
- WindowsStatic.cs
- ObjectConverter.cs
- ConfigurationManagerInternal.cs
- FixedSOMTextRun.cs
- bidPrivateBase.cs
- ResourcePool.cs
- AssemblyBuilderData.cs
- ActivityTrace.cs
- TreeNode.cs