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
- QueryGenerator.cs
- ProjectionCamera.cs
- IList.cs
- EntityTransaction.cs
- LayoutInformation.cs
- XmlElementList.cs
- GeneralTransform3DTo2D.cs
- UnsafeNativeMethodsTablet.cs
- ScrollBarAutomationPeer.cs
- BuildManagerHost.cs
- ApplicationContext.cs
- Win32SafeHandles.cs
- DragDeltaEventArgs.cs
- UrlRoutingModule.cs
- DataRowCollection.cs
- WaitingCursor.cs
- SqlUtils.cs
- GraphicsState.cs
- TextProperties.cs
- LogicalExpr.cs
- ImageList.cs
- ProcessProtocolHandler.cs
- TextTrailingWordEllipsis.cs
- ConfigurationPropertyAttribute.cs
- CodeAttributeArgumentCollection.cs
- HttpHandlerActionCollection.cs
- ConfigurationPermission.cs
- EventLogStatus.cs
- TransactionProxy.cs
- ChineseLunisolarCalendar.cs
- RegexBoyerMoore.cs
- cookie.cs
- BulletChrome.cs
- BufferedStream.cs
- Root.cs
- ConstraintManager.cs
- CustomGrammar.cs
- HitTestParameters3D.cs
- CurrentTimeZone.cs
- MetadataSerializer.cs
- ScrollBar.cs
- DashStyle.cs
- PaperSource.cs
- SqlErrorCollection.cs
- DataSet.cs
- GridViewRowCollection.cs
- VirtualPathUtility.cs
- ListBindingHelper.cs
- PointCollectionValueSerializer.cs
- SqlDataSourceRefreshSchemaForm.cs
- SettingsPropertyCollection.cs
- ActivityInstance.cs
- CharConverter.cs
- Transform.cs
- SystemIPv6InterfaceProperties.cs
- DBCommandBuilder.cs
- UriTemplateClientFormatter.cs
- ApplicationGesture.cs
- XmlEntityReference.cs
- AssemblyNameProxy.cs
- Guid.cs
- OLEDB_Enum.cs
- Util.cs
- EmptyEnumerator.cs
- HttpModulesInstallComponent.cs
- FixedHyperLink.cs
- ExceptionValidationRule.cs
- ToolStripDropDownMenu.cs
- NativeMethods.cs
- SafeEventLogReadHandle.cs
- RegexParser.cs
- ManagementDateTime.cs
- HostedImpersonationContext.cs
- FrameworkObject.cs
- ProviderBase.cs
- TemplatePropertyEntry.cs
- DateTimeFormat.cs
- OpCodes.cs
- SoapEnvelopeProcessingElement.cs
- TableItemPattern.cs
- ComponentGlyph.cs
- RawKeyboardInputReport.cs
- BitmapEffectGeneralTransform.cs
- SpecialFolderEnumConverter.cs
- ConfigPathUtility.cs
- FtpWebRequest.cs
- XmlNamespaceDeclarationsAttribute.cs
- XmlSchemaAttribute.cs
- __Filters.cs
- XmlnsCompatibleWithAttribute.cs
- ExpressionEvaluator.cs
- BaseParser.cs
- XPathNavigatorKeyComparer.cs
- SemanticAnalyzer.cs
- EventEntry.cs
- SizeAnimationUsingKeyFrames.cs
- SubMenuStyle.cs
- CmsUtils.cs
- DateTimeParse.cs
- HostingEnvironmentWrapper.cs