Code:
/ 4.0 / 4.0 / untmp / 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 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
- ZipPackage.cs
- DebugHandleTracker.cs
- WebFormDesignerActionService.cs
- TypeElement.cs
- securestring.cs
- ScriptReferenceBase.cs
- ScalarConstant.cs
- MergablePropertyAttribute.cs
- SerializationUtility.cs
- ByteStack.cs
- CodeTypeDelegate.cs
- AnnotationStore.cs
- ComPlusInstanceContextInitializer.cs
- UnknownBitmapDecoder.cs
- HttpRequestContext.cs
- CheckoutException.cs
- SqlRowUpdatingEvent.cs
- FilterQueryOptionExpression.cs
- SelectionEditingBehavior.cs
- TaskHelper.cs
- MessageVersion.cs
- DependencyPropertyKind.cs
- COMException.cs
- FileDialog.cs
- RangeValidator.cs
- RadioButtonFlatAdapter.cs
- ListControl.cs
- SafePEFileHandle.cs
- ObjectStateFormatter.cs
- WebHttpSecurityModeHelper.cs
- UrlMapping.cs
- HtmlFormParameterWriter.cs
- SuspendDesigner.cs
- ImplicitInputBrush.cs
- CompModSwitches.cs
- ConfigurationStrings.cs
- CallContext.cs
- XamlStyleSerializer.cs
- DiscoveryVersion.cs
- ContextStack.cs
- NTAccount.cs
- SubpageParagraph.cs
- X509Utils.cs
- TextBox.cs
- QueryableFilterUserControl.cs
- SqlWorkflowPersistenceService.cs
- DbProviderFactory.cs
- TextDecoration.cs
- log.cs
- ContextMenuAutomationPeer.cs
- CompilerGlobalScopeAttribute.cs
- TypeGeneratedEventArgs.cs
- StructuralType.cs
- FileFormatException.cs
- AdornerLayer.cs
- Literal.cs
- NativeMethods.cs
- PermissionAttributes.cs
- UpdateTracker.cs
- ToolStripScrollButton.cs
- SQLGuidStorage.cs
- PointLight.cs
- SqlFunctionAttribute.cs
- StateElement.cs
- IgnoreDeviceFilterElement.cs
- MaskedTextProvider.cs
- QueryOutputWriter.cs
- VisualBrush.cs
- ChineseLunisolarCalendar.cs
- WorkflowServiceOperationListItem.cs
- XComponentModel.cs
- LinqDataSourceInsertEventArgs.cs
- HwndHostAutomationPeer.cs
- DbSourceCommand.cs
- SQLInt32Storage.cs
- InputDevice.cs
- SoapHeaderException.cs
- BufferAllocator.cs
- DesignerVerb.cs
- SqlNodeTypeOperators.cs
- MessageHeaders.cs
- WorkflowOperationInvoker.cs
- FormViewPagerRow.cs
- ElementMarkupObject.cs
- BaseCodeDomTreeGenerator.cs
- Base64Encoder.cs
- ContainerSelectorActiveEvent.cs
- SqlTriggerAttribute.cs
- ProxyElement.cs
- MailBnfHelper.cs
- XmlILConstructAnalyzer.cs
- CellParagraph.cs
- ToolStripRenderer.cs
- FormsAuthenticationConfiguration.cs
- SAPIEngineTypes.cs
- MutableAssemblyCacheEntry.cs
- FilterableAttribute.cs
- FrugalMap.cs
- DesignerValidatorAdapter.cs
- BlockUIContainer.cs