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
- ObjectHelper.cs
- AccessKeyManager.cs
- DragDeltaEventArgs.cs
- ObjectReaderCompiler.cs
- TextCompositionManager.cs
- SettingsAttributes.cs
- MenuStrip.cs
- RowUpdatingEventArgs.cs
- BaseContextMenu.cs
- PathTooLongException.cs
- rsa.cs
- Int64Animation.cs
- IODescriptionAttribute.cs
- OAVariantLib.cs
- WebPartConnectionCollection.cs
- RenderDataDrawingContext.cs
- Configuration.cs
- TransformValueSerializer.cs
- XmlProcessingInstruction.cs
- ListViewItem.cs
- DownloadProgressEventArgs.cs
- SpellerHighlightLayer.cs
- TimeManager.cs
- StringDictionaryEditor.cs
- HybridDictionary.cs
- WMIInterop.cs
- UnmanagedMemoryStreamWrapper.cs
- Module.cs
- MDIClient.cs
- FontStyle.cs
- Size.cs
- shaperfactoryquerycacheentry.cs
- FlowPosition.cs
- ReadingWritingEntityEventArgs.cs
- DataListComponentEditor.cs
- RelationshipManager.cs
- IndexedGlyphRun.cs
- ParserStack.cs
- ResourceDictionaryCollection.cs
- ScrollContentPresenter.cs
- CssStyleCollection.cs
- EntityRecordInfo.cs
- DataGridCellItemAutomationPeer.cs
- DirectionalLight.cs
- GetPageCompletedEventArgs.cs
- _SingleItemRequestCache.cs
- DataSetSchema.cs
- Update.cs
- XamlStream.cs
- ColumnHeaderConverter.cs
- PingReply.cs
- ScriptDescriptor.cs
- HealthMonitoringSection.cs
- PrintDocument.cs
- DefaultValueTypeConverter.cs
- GregorianCalendarHelper.cs
- HierarchicalDataBoundControl.cs
- DropSource.cs
- ISCIIEncoding.cs
- SamlSecurityToken.cs
- XmlEventCache.cs
- DataSetMappper.cs
- ExtendedPropertyCollection.cs
- CategoryNameCollection.cs
- PassportIdentity.cs
- HtmlInputFile.cs
- TemplateField.cs
- TextTrailingCharacterEllipsis.cs
- SQLMoney.cs
- ValidationError.cs
- EventNotify.cs
- MsmqAppDomainProtocolHandler.cs
- DataControlCommands.cs
- ThaiBuddhistCalendar.cs
- DefaultTextStoreTextComposition.cs
- GeometryHitTestResult.cs
- SafeJobHandle.cs
- BindingContext.cs
- DelayedRegex.cs
- BitmapMetadataBlob.cs
- KeyboardEventArgs.cs
- EntityDataSourceContextCreatedEventArgs.cs
- MultipleViewProviderWrapper.cs
- ManagementDateTime.cs
- JapaneseLunisolarCalendar.cs
- PeerFlooder.cs
- TypeHelper.cs
- Site.cs
- SimpleHandlerFactory.cs
- WebBrowserProgressChangedEventHandler.cs
- SingleResultAttribute.cs
- RoleGroupCollectionEditor.cs
- GrammarBuilderDictation.cs
- SiteMapDataSource.cs
- PostBackOptions.cs
- SectionXmlInfo.cs
- ExportOptions.cs
- ProtocolImporter.cs
- UserControl.cs
- FontFaceLayoutInfo.cs