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
- SettingsPropertyValueCollection.cs
- SecurityCredentialsManager.cs
- CompositeFontParser.cs
- IssuanceTokenProviderState.cs
- TableItemPattern.cs
- EntityConnectionStringBuilder.cs
- KeyNotFoundException.cs
- HtmlEmptyTagControlBuilder.cs
- EntityModelSchemaGenerator.cs
- AlgoModule.cs
- CodeCommentStatement.cs
- SqlMultiplexer.cs
- AutomationPropertyInfo.cs
- Grid.cs
- DefaultObjectMappingItemCollection.cs
- SharedDp.cs
- VirtualDirectoryMapping.cs
- SingleAnimationUsingKeyFrames.cs
- BinHexDecoder.cs
- MenuItemAutomationPeer.cs
- AuthenticationConfig.cs
- DataServiceEntityAttribute.cs
- FixedSOMImage.cs
- FocusChangedEventArgs.cs
- xsdvalidator.cs
- CorrelationManager.cs
- WebPartCloseVerb.cs
- UriParserTemplates.cs
- GradientStopCollection.cs
- Receive.cs
- DataExpression.cs
- SmiEventSink.cs
- FontDialog.cs
- HtmlTableCell.cs
- ServiceReflector.cs
- Point.cs
- ToolStripDropDownItemDesigner.cs
- StatusStrip.cs
- XmlArrayAttribute.cs
- SystemUdpStatistics.cs
- KeyValuePair.cs
- SizeLimitedCache.cs
- RegexCode.cs
- HtmlWindowCollection.cs
- WebExceptionStatus.cs
- MouseButtonEventArgs.cs
- WorkflowMarkupSerializerMapping.cs
- Matrix.cs
- CommonDialog.cs
- ToolStripItemRenderEventArgs.cs
- WithStatement.cs
- OlePropertyStructs.cs
- LogWriteRestartAreaState.cs
- TreeNode.cs
- Int32EqualityComparer.cs
- DesignerForm.cs
- MediaCommands.cs
- ObjectStateFormatter.cs
- PartialClassGenerationTask.cs
- _Events.cs
- FilterException.cs
- ConfigXmlAttribute.cs
- DataGridViewCellValidatingEventArgs.cs
- EntitySetDataBindingList.cs
- HijriCalendar.cs
- ChangePassword.cs
- TextSpanModifier.cs
- ColorContext.cs
- TextPenaltyModule.cs
- BookmarkOptionsHelper.cs
- CommentAction.cs
- TableRowCollection.cs
- SelectionHighlightInfo.cs
- BrushValueSerializer.cs
- TrayIconDesigner.cs
- SpeakProgressEventArgs.cs
- MethodBuilder.cs
- BindableAttribute.cs
- MethodImplAttribute.cs
- VerificationAttribute.cs
- X509ChainElement.cs
- NavigateEvent.cs
- ProfilePropertyNameValidator.cs
- IDataContractSurrogate.cs
- SignatureToken.cs
- TableParagraph.cs
- GeometryDrawing.cs
- TextProperties.cs
- DataColumnCollection.cs
- ExternalCalls.cs
- ButtonDesigner.cs
- TextRenderer.cs
- shaper.cs
- UnhandledExceptionEventArgs.cs
- Pkcs7Signer.cs
- CurrentChangedEventManager.cs
- CodeDirectionExpression.cs
- HttpResponseHeader.cs
- RoutingConfiguration.cs
- ConnectionStringsExpressionBuilder.cs