Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- EntityDataSourceDesigner.cs
- ExpandableObjectConverter.cs
- RangeExpression.cs
- ObjectPropertyMapping.cs
- BitmapEffectOutputConnector.cs
- ProtocolException.cs
- AssemblyHash.cs
- Image.cs
- RequestNavigateEventArgs.cs
- CompilationUtil.cs
- ReturnValue.cs
- ExpandedWrapper.cs
- DataRecord.cs
- XmlReflectionMember.cs
- CryptoApi.cs
- TypeDependencyAttribute.cs
- DataGridViewColumn.cs
- AnnotationHighlightLayer.cs
- ServiceReference.cs
- WeakReference.cs
- XhtmlBasicFormAdapter.cs
- SafeHandles.cs
- SettingsAttributeDictionary.cs
- PublisherIdentityPermission.cs
- MenuItemCollection.cs
- BitmapDownload.cs
- AndCondition.cs
- ObjectStateFormatter.cs
- ToolbarAUtomationPeer.cs
- TypeBuilderInstantiation.cs
- FtpCachePolicyElement.cs
- XmlMembersMapping.cs
- JournalEntry.cs
- WasEndpointConfigContainer.cs
- SQLDecimal.cs
- PageCatalogPart.cs
- ArrangedElementCollection.cs
- LinkedList.cs
- HMACSHA1.cs
- Utils.cs
- UrlSyndicationContent.cs
- BitmapSourceSafeMILHandle.cs
- DashStyle.cs
- LinqDataSourceView.cs
- ObjectListField.cs
- QueryCacheManager.cs
- ToolStripButton.cs
- AxDesigner.cs
- BevelBitmapEffect.cs
- DictionaryContent.cs
- Accessible.cs
- RichTextBoxContextMenu.cs
- SmtpMail.cs
- DESCryptoServiceProvider.cs
- Item.cs
- StringArrayEditor.cs
- EdmScalarPropertyAttribute.cs
- TemplateContentLoader.cs
- AsymmetricSecurityBindingElement.cs
- Part.cs
- ScriptControlManager.cs
- WebBrowser.cs
- TextEditorTables.cs
- ObjectComplexPropertyMapping.cs
- DataSourceControl.cs
- WindowsClientElement.cs
- MaskDesignerDialog.cs
- XmlBinaryReader.cs
- RegionData.cs
- EndEvent.cs
- PositiveTimeSpanValidatorAttribute.cs
- ExecutorLocksHeldException.cs
- CompilerLocalReference.cs
- DecoderBestFitFallback.cs
- SecurityElement.cs
- AssemblyCollection.cs
- StoreItemCollection.cs
- SplineQuaternionKeyFrame.cs
- Cursor.cs
- KeyGestureConverter.cs
- DataView.cs
- SocketInformation.cs
- ConfigsHelper.cs
- UnsafeNativeMethods.cs
- FaultHandlingFilter.cs
- StyleCollection.cs
- SqlRewriteScalarSubqueries.cs
- NumericUpDownAccelerationCollection.cs
- StandardOleMarshalObject.cs
- ProfileManager.cs
- MetadataArtifactLoaderFile.cs
- BadImageFormatException.cs
- RemotingConfiguration.cs
- CodePageEncoding.cs
- CqlParser.cs
- SEHException.cs
- OptimizedTemplateContent.cs
- PresentationAppDomainManager.cs
- WebContext.cs
- Validator.cs