Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1 / ExtentKey.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration.Structures { // This class represents the key of constraint on values that a relation slot may have internal class ExtentKey : InternalBase { #region Constructors // effects: Creates a key object for an extent (present in each MemberPath) // with the fields corresponding to keyFields internal ExtentKey(IEnumerablekeyFields) { m_keyFields = new List (keyFields); } #endregion #region Fields // All the key fields in an entity set private List m_keyFields; #endregion #region Properties internal IEnumerable KeyFields { get { return m_keyFields; } } #endregion #region Methods // effects: Determines all the keys (unique and primary for // entityType) for entityType and returns a key. "prefix" gives the // path of the extent or end of a relationship in a relationship set // -- prefix is prepended to the entity's key fields to get the full memberpath internal static List GetKeysForEntityType(MemberPath prefix, EntityType entityType) { // CHANGE_[....]_MULTIPLE_KEYS: currently there is a single key only. Need to support // keys inside complex types + unique keys ExtentKey key = GetPrimaryKeyForEntityType(prefix, entityType); List keys = new List (); keys.Add(key); return keys; } // effects: Returns the key for entityType prefixed with prefix (for // its memberPath) internal static ExtentKey GetPrimaryKeyForEntityType(MemberPath prefix, EntityType entityType) { List keyFields = new List (); foreach (EdmMember keyMember in entityType.KeyMembers) { Debug.Assert(keyMember != null, "Bogus key member in metadata"); keyFields.Add(new MemberPath(prefix, keyMember)); } // Just have one key for now ExtentKey key = new ExtentKey(keyFields); return key; } // effects: Returns a key correspnding to all the fields in different // ends of relationtype prefixed with "prefix" internal static ExtentKey GetKeyForRelationType(MemberPath prefix, AssociationType relationType) { List keyFields = new List (); foreach (AssociationEndMember endMember in relationType.AssociationEndMembers) { MemberPath endPrefix = new MemberPath(prefix, endMember); EntityType entityType = MetadataHelper.GetEntityTypeForEnd(endMember); ExtentKey primaryKey = GetPrimaryKeyForEntityType(endPrefix, entityType); keyFields.AddRange(primaryKey.KeyFields); } ExtentKey key = new ExtentKey(keyFields); return key; } internal string ToUserString() { string result = StringUtil.ToCommaSeparatedStringSorted(m_keyFields); return result; } internal override void ToCompactString(StringBuilder builder) { StringUtil.ToCommaSeparatedStringSorted(builder, m_keyFields); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration.Structures { // This class represents the key of constraint on values that a relation slot may have internal class ExtentKey : InternalBase { #region Constructors // effects: Creates a key object for an extent (present in each MemberPath) // with the fields corresponding to keyFields internal ExtentKey(IEnumerablekeyFields) { m_keyFields = new List (keyFields); } #endregion #region Fields // All the key fields in an entity set private List m_keyFields; #endregion #region Properties internal IEnumerable KeyFields { get { return m_keyFields; } } #endregion #region Methods // effects: Determines all the keys (unique and primary for // entityType) for entityType and returns a key. "prefix" gives the // path of the extent or end of a relationship in a relationship set // -- prefix is prepended to the entity's key fields to get the full memberpath internal static List GetKeysForEntityType(MemberPath prefix, EntityType entityType) { // CHANGE_[....]_MULTIPLE_KEYS: currently there is a single key only. Need to support // keys inside complex types + unique keys ExtentKey key = GetPrimaryKeyForEntityType(prefix, entityType); List keys = new List (); keys.Add(key); return keys; } // effects: Returns the key for entityType prefixed with prefix (for // its memberPath) internal static ExtentKey GetPrimaryKeyForEntityType(MemberPath prefix, EntityType entityType) { List keyFields = new List (); foreach (EdmMember keyMember in entityType.KeyMembers) { Debug.Assert(keyMember != null, "Bogus key member in metadata"); keyFields.Add(new MemberPath(prefix, keyMember)); } // Just have one key for now ExtentKey key = new ExtentKey(keyFields); return key; } // effects: Returns a key correspnding to all the fields in different // ends of relationtype prefixed with "prefix" internal static ExtentKey GetKeyForRelationType(MemberPath prefix, AssociationType relationType) { List keyFields = new List (); foreach (AssociationEndMember endMember in relationType.AssociationEndMembers) { MemberPath endPrefix = new MemberPath(prefix, endMember); EntityType entityType = MetadataHelper.GetEntityTypeForEnd(endMember); ExtentKey primaryKey = GetPrimaryKeyForEntityType(endPrefix, entityType); keyFields.AddRange(primaryKey.KeyFields); } ExtentKey key = new ExtentKey(keyFields); return key; } internal string ToUserString() { string result = StringUtil.ToCommaSeparatedStringSorted(m_keyFields); return result; } internal override void ToCompactString(StringBuilder builder) { StringUtil.ToCommaSeparatedStringSorted(builder, m_keyFields); } #endregion } } // 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
- Control.cs
- ApplicationInfo.cs
- TextRunTypographyProperties.cs
- DataServiceException.cs
- GridViewColumnHeaderAutomationPeer.cs
- filewebrequest.cs
- securitycriticaldataformultiplegetandset.cs
- GridViewPageEventArgs.cs
- SourceFilter.cs
- HandlerBase.cs
- InkCanvasSelection.cs
- _Win32.cs
- StringCollectionEditor.cs
- SqlAggregateChecker.cs
- SQLRoleProvider.cs
- OdbcConnection.cs
- WindowsRichEditRange.cs
- ProcessModuleCollection.cs
- CharConverter.cs
- ListViewItemEventArgs.cs
- MetadataUtilsSmi.cs
- DataGridItem.cs
- handlecollector.cs
- GPStream.cs
- MetadataSource.cs
- CompensationToken.cs
- HttpListenerPrefixCollection.cs
- SurrogateEncoder.cs
- FontWeights.cs
- CollectionAdapters.cs
- ProviderIncompatibleException.cs
- RequestCacheManager.cs
- AnimatedTypeHelpers.cs
- EvidenceBase.cs
- ReadOnlyCollectionBase.cs
- WebPartUtil.cs
- ErrorInfoXmlDocument.cs
- DiscoveryCallbackBehavior.cs
- DiscoveryClientDuplexChannel.cs
- HtmlHistory.cs
- Win32SafeHandles.cs
- PersonalizationAdministration.cs
- returneventsaver.cs
- EntityReference.cs
- HttpTransportManager.cs
- HtmlTextArea.cs
- TextShapeableCharacters.cs
- AvTraceFormat.cs
- WebHttpDispatchOperationSelectorData.cs
- WebPartAddingEventArgs.cs
- VersionPair.cs
- ConnectionPoint.cs
- DbMetaDataCollectionNames.cs
- CompleteWizardStep.cs
- Run.cs
- TemplateColumn.cs
- InnerItemCollectionView.cs
- UdpChannelFactory.cs
- SqlPersonalizationProvider.cs
- WebPartZoneBase.cs
- CommonDialog.cs
- BrowserDefinitionCollection.cs
- InstanceKeyCompleteException.cs
- Msec.cs
- SerializerProvider.cs
- WebSysDescriptionAttribute.cs
- HttpDebugHandler.cs
- BitmapCodecInfo.cs
- autovalidator.cs
- CellLabel.cs
- CqlIdentifiers.cs
- EventLogPermission.cs
- DataRelationPropertyDescriptor.cs
- InputLanguageSource.cs
- DataDocumentXPathNavigator.cs
- InputLanguageProfileNotifySink.cs
- TakeQueryOptionExpression.cs
- DesignTimeVisibleAttribute.cs
- WindowsUpDown.cs
- MultiByteCodec.cs
- BrowserDefinitionCollection.cs
- MarshalByValueComponent.cs
- FontSizeConverter.cs
- RbTree.cs
- GeometryValueSerializer.cs
- XmlHierarchicalDataSourceView.cs
- MruCache.cs
- DisplayInformation.cs
- EntityDescriptor.cs
- InternalResources.cs
- ZipIOBlockManager.cs
- AnnotationDocumentPaginator.cs
- IPHostEntry.cs
- CfgParser.cs
- CompareValidator.cs
- ExceptionUtil.cs
- WpfWebRequestHelper.cs
- AnimationTimeline.cs
- HelpFileFileNameEditor.cs
- safePerfProviderHandle.cs