Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Metadata / MappingMetadataHelper.cs / 1 / MappingMetadataHelper.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....],[....] //--------------------------------------------------------------------- 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 IEnumerableGetMappingsForEntitySetAndType(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 IEnumerableGetMappingsForEntitySetAndSuperTypes(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 IEnumerableGetIsTypeOfMappingsForEntitySetAndType(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 [....],[....] //--------------------------------------------------------------------- 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 IEnumerableGetMappingsForEntitySetAndType(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 IEnumerableGetMappingsForEntitySetAndSuperTypes(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 IEnumerableGetIsTypeOfMappingsForEntitySetAndType(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
- ControlParameter.cs
- Queue.cs
- ManipulationInertiaStartingEventArgs.cs
- Imaging.cs
- CancellationHandlerDesigner.cs
- xml.cs
- TextChange.cs
- RestHandlerFactory.cs
- FormatterServices.cs
- URLAttribute.cs
- XhtmlBasicCommandAdapter.cs
- IgnoreSectionHandler.cs
- WebCategoryAttribute.cs
- Style.cs
- MethodBuilder.cs
- XmlArrayAttribute.cs
- SetterBase.cs
- TableCell.cs
- HtmlInputImage.cs
- CompilationUtil.cs
- SchemaElementDecl.cs
- PolicyManager.cs
- SqlConnectionStringBuilder.cs
- TableCellAutomationPeer.cs
- TransportChannelListener.cs
- RelatedPropertyManager.cs
- Registry.cs
- Stroke2.cs
- SubMenuStyle.cs
- ClientTargetSection.cs
- AliasedExpr.cs
- SpecialNameAttribute.cs
- CharacterMetrics.cs
- TransformPattern.cs
- NegatedCellConstant.cs
- XmlHierarchicalEnumerable.cs
- GenericUriParser.cs
- WsatServiceAddress.cs
- streamingZipPartStream.cs
- CheckoutException.cs
- Point.cs
- DataGridViewHeaderCell.cs
- DataGridRow.cs
- MarkupExtensionParser.cs
- ForEachAction.cs
- EntityClientCacheKey.cs
- ClientConfigurationHost.cs
- ISFTagAndGuidCache.cs
- CollectionViewGroupInternal.cs
- BinaryReader.cs
- RecordManager.cs
- XsdBuilder.cs
- Panel.cs
- CssTextWriter.cs
- TextEditorSelection.cs
- PropertyPushdownHelper.cs
- ClientType.cs
- ProviderConnectionPoint.cs
- EntityDataSourceViewSchema.cs
- InstanceDataCollection.cs
- FillRuleValidation.cs
- EncryptedData.cs
- RightNameExpirationInfoPair.cs
- HttpConfigurationSystem.cs
- TreeViewDesigner.cs
- NewArrayExpression.cs
- FutureFactory.cs
- Exceptions.cs
- ColorTransform.cs
- PrintDialog.cs
- Model3D.cs
- MetadataArtifactLoaderResource.cs
- XmlBuffer.cs
- Pool.cs
- GenerateTemporaryTargetAssembly.cs
- UIAgentMonitorHandle.cs
- DefaultBindingPropertyAttribute.cs
- EntityModelSchemaGenerator.cs
- SafeHGlobalHandleCritical.cs
- StaticExtension.cs
- ToolstripProfessionalRenderer.cs
- ConfigurationStrings.cs
- BulletChrome.cs
- PropertyToken.cs
- ConditionalWeakTable.cs
- TypeFieldSchema.cs
- ResXResourceWriter.cs
- DisplayMemberTemplateSelector.cs
- EdmTypeAttribute.cs
- WebPartCatalogAddVerb.cs
- ControlCachePolicy.cs
- MenuItemCollection.cs
- WebPartPersonalization.cs
- TypefaceCollection.cs
- EntityParameterCollection.cs
- Workspace.cs
- DataBoundControlActionList.cs
- LocatorBase.cs
- UnsafePeerToPeerMethods.cs
- Context.cs