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
- DesignerObjectListAdapter.cs
- ToolBarButton.cs
- KerberosTokenFactoryCredential.cs
- UnsafeNativeMethods.cs
- EndpointDiscoveryMetadata.cs
- RuntimeEnvironment.cs
- TableRow.cs
- ResourceIDHelper.cs
- VectorAnimationBase.cs
- InstanceStoreQueryResult.cs
- BulletedListEventArgs.cs
- ImplicitInputBrush.cs
- ImageInfo.cs
- DefaultMemberAttribute.cs
- InlinedAggregationOperatorEnumerator.cs
- SqlAliaser.cs
- Quaternion.cs
- VectorCollectionValueSerializer.cs
- XpsS0ValidatingLoader.cs
- FragmentNavigationEventArgs.cs
- ComplexPropertyEntry.cs
- PixelShader.cs
- CompositeDataBoundControl.cs
- ValueOfAction.cs
- ConnectionStringsExpressionEditor.cs
- ThemeableAttribute.cs
- IERequestCache.cs
- SchemaLookupTable.cs
- TextWriterTraceListener.cs
- InputProviderSite.cs
- HelpEvent.cs
- SpecularMaterial.cs
- ContainerParaClient.cs
- RadioButton.cs
- SetterBase.cs
- WebPartConnectionsCancelEventArgs.cs
- TableAdapterManagerGenerator.cs
- TraceListener.cs
- ApplicationSettingsBase.cs
- EmptyImpersonationContext.cs
- TrustSection.cs
- SurrogateEncoder.cs
- RowToFieldTransformer.cs
- CollectionType.cs
- DbDataRecord.cs
- TimerElapsedEvenArgs.cs
- ExpanderAutomationPeer.cs
- ConfigurationErrorsException.cs
- CollectionChange.cs
- Certificate.cs
- SamlAuthenticationStatement.cs
- MemberExpressionHelper.cs
- EditCommandColumn.cs
- CodeMemberField.cs
- Effect.cs
- InProcStateClientManager.cs
- TargetInvocationException.cs
- Hashtable.cs
- ProviderBase.cs
- ViewGenResults.cs
- DataGridViewRowCancelEventArgs.cs
- EventHandlersDesigner.cs
- CryptoApi.cs
- SHA256Managed.cs
- HostUtils.cs
- WCFBuildProvider.cs
- SQLRoleProvider.cs
- DragDropManager.cs
- RegistrySecurity.cs
- MapPathBasedVirtualPathProvider.cs
- ToolZone.cs
- TableRowGroup.cs
- Soap.cs
- StoreContentChangedEventArgs.cs
- EventBuilder.cs
- SvcMapFile.cs
- AudioLevelUpdatedEventArgs.cs
- ContourSegment.cs
- StylusCaptureWithinProperty.cs
- MsmqReceiveParameters.cs
- Rect3DValueSerializer.cs
- OdbcDataReader.cs
- PathSegmentCollection.cs
- ContainerParaClient.cs
- SudsCommon.cs
- ClientData.cs
- DataGridDetailsPresenterAutomationPeer.cs
- RemoteWebConfigurationHost.cs
- externdll.cs
- GeneralTransform3DGroup.cs
- InteropAutomationProvider.cs
- ToolStripDropDown.cs
- StringExpressionSet.cs
- WebPartDescription.cs
- XPathQilFactory.cs
- ApplicationDirectoryMembershipCondition.cs
- MapPathBasedVirtualPathProvider.cs
- EntityReference.cs
- ListViewGroupConverter.cs
- QueryFunctions.cs