Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EntityException.cs
- XmlRawWriter.cs
- XmlArrayItemAttributes.cs
- DrawingContextDrawingContextWalker.cs
- PieceNameHelper.cs
- RectangleHotSpot.cs
- XmlCharacterData.cs
- XmlDocumentType.cs
- DeclarativeCatalogPart.cs
- Int64Converter.cs
- DescendantOverDescendantQuery.cs
- AddInToken.cs
- BaseUriWithWildcard.cs
- FontFamilyIdentifier.cs
- ScrollPattern.cs
- RSAProtectedConfigurationProvider.cs
- ConnectionManagementElement.cs
- CommonDialog.cs
- BasicHttpMessageSecurityElement.cs
- PathHelper.cs
- CompositionAdorner.cs
- Win32PrintDialog.cs
- EventNotify.cs
- SafeFindHandle.cs
- ObjectListItemCollection.cs
- StylusEditingBehavior.cs
- SessionEndingCancelEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs
- DataGridViewSelectedRowCollection.cs
- DurableEnlistmentState.cs
- CodeCatchClauseCollection.cs
- RowType.cs
- SizeValueSerializer.cs
- ListenerElementsCollection.cs
- RuntimeIdentifierPropertyAttribute.cs
- ZipIOBlockManager.cs
- Win32SafeHandles.cs
- SmiConnection.cs
- Msmq3PoisonHandler.cs
- NavigationExpr.cs
- ReverseInheritProperty.cs
- PersonalizationEntry.cs
- DrawingState.cs
- FontSource.cs
- SystemIPInterfaceStatistics.cs
- EventDescriptorCollection.cs
- MSG.cs
- SmiXetterAccessMap.cs
- SqlAliaser.cs
- StrongNameKeyPair.cs
- Path.cs
- WindowsSysHeader.cs
- X509CertificateTokenFactoryCredential.cs
- TemplateBuilder.cs
- Evidence.cs
- ModuleElement.cs
- XPathDocumentBuilder.cs
- _NegoState.cs
- LinkedResource.cs
- SettingsAttributes.cs
- BitmapMetadataEnumerator.cs
- ImportOptions.cs
- securitycriticaldataClass.cs
- DecoderExceptionFallback.cs
- DPCustomTypeDescriptor.cs
- HttpClientCertificate.cs
- VectorAnimationBase.cs
- URLAttribute.cs
- ApplicationServicesHostFactory.cs
- RequestDescription.cs
- TextDecorationCollection.cs
- Page.cs
- NameValuePair.cs
- ThemeDictionaryExtension.cs
- ObfuscationAttribute.cs
- TextServicesDisplayAttribute.cs
- DataPagerFieldCommandEventArgs.cs
- SqlWriter.cs
- DataGridViewCellMouseEventArgs.cs
- WebResourceAttribute.cs
- WindowsAltTab.cs
- DesignTimeSiteMapProvider.cs
- RegexFCD.cs
- SkewTransform.cs
- CodePageUtils.cs
- BufferedReadStream.cs
- SqlUserDefinedTypeAttribute.cs
- PropertyManager.cs
- PackagingUtilities.cs
- CultureTable.cs
- LocatorPart.cs
- MdImport.cs
- WebPartVerbsEventArgs.cs
- ModelPropertyCollectionImpl.cs
- SqlCacheDependencyDatabase.cs
- TableRowCollection.cs
- HtmlImage.cs
- SimpleMailWebEventProvider.cs
- ExpressionEditorAttribute.cs
- ClrPerspective.cs