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
- MaxMessageSizeStream.cs
- Code.cs
- SignatureSummaryDialog.cs
- DataSourceSerializationException.cs
- DesignerTransactionCloseEvent.cs
- ExchangeUtilities.cs
- XamlFigureLengthSerializer.cs
- ToolStripGripRenderEventArgs.cs
- CultureInfoConverter.cs
- RowBinding.cs
- DropTarget.cs
- IResourceProvider.cs
- XPathChildIterator.cs
- ResourceReader.cs
- BaseValidator.cs
- XmlSchemaAnnotation.cs
- DataGridViewLinkCell.cs
- SqlFunctionAttribute.cs
- DataBoundControlHelper.cs
- ContentType.cs
- DataGridCommandEventArgs.cs
- DbProviderServices.cs
- TreeViewDesigner.cs
- TrackingParticipant.cs
- BitStream.cs
- TableDetailsCollection.cs
- StreamGeometry.cs
- Matrix3DStack.cs
- ColumnWidthChangedEvent.cs
- QilPatternFactory.cs
- DataServiceRequest.cs
- XmlElementCollection.cs
- Bits.cs
- PersonalizationState.cs
- ParserStreamGeometryContext.cs
- DefaultShape.cs
- FileEnumerator.cs
- NameValueConfigurationElement.cs
- PageTheme.cs
- PathStreamGeometryContext.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- XmlDictionaryString.cs
- ExpressionVisitor.cs
- EncoderParameters.cs
- WindowsListView.cs
- ResourceSet.cs
- DbProviderFactoriesConfigurationHandler.cs
- BinaryOperationBinder.cs
- StructuredTypeEmitter.cs
- OleDbEnumerator.cs
- ResizeGrip.cs
- FixedSOMPage.cs
- DoubleAnimationUsingPath.cs
- _HeaderInfoTable.cs
- Label.cs
- ObjectContext.cs
- WebPartHeaderCloseVerb.cs
- GatewayIPAddressInformationCollection.cs
- CollectionViewProxy.cs
- UnsafeNetInfoNativeMethods.cs
- DataGridViewComboBoxColumn.cs
- RowUpdatingEventArgs.cs
- HashFinalRequest.cs
- TCPClient.cs
- SmiEventSink.cs
- ResourceDefaultValueAttribute.cs
- PeerDuplexChannelListener.cs
- CommonObjectSecurity.cs
- ColumnMapProcessor.cs
- ByteAnimationBase.cs
- UInt16.cs
- CompressEmulationStream.cs
- DaylightTime.cs
- Comparer.cs
- PolygonHotSpot.cs
- OutputScope.cs
- ClosableStream.cs
- LinearKeyFrames.cs
- TypeSystem.cs
- DesignerObjectListAdapter.cs
- Pen.cs
- ProjectionPlanCompiler.cs
- Models.cs
- PostBackOptions.cs
- PresentationAppDomainManager.cs
- DynamicFilter.cs
- XslCompiledTransform.cs
- SafeNativeMethods.cs
- BuildProviderUtils.cs
- OdbcParameter.cs
- ArgumentException.cs
- OutputCacheSettings.cs
- PresentationTraceSources.cs
- TextTabProperties.cs
- TransformationRules.cs
- Stroke2.cs
- InfoCardRSACryptoProvider.cs
- ChtmlImageAdapter.cs
- TemplateControlCodeDomTreeGenerator.cs
- MemberNameValidator.cs