Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- DriveInfo.cs
- SymbolMethod.cs
- Pens.cs
- SpeechRecognitionEngine.cs
- EditingCoordinator.cs
- SchemaHelper.cs
- FilterableAttribute.cs
- ImageAutomationPeer.cs
- COM2FontConverter.cs
- FileDialog_Vista_Interop.cs
- BindingWorker.cs
- HttpContextServiceHost.cs
- BitmapFrameEncode.cs
- SelfIssuedAuthProofToken.cs
- TrackBar.cs
- XDRSchema.cs
- XPathDescendantIterator.cs
- ApplicationServiceHelper.cs
- WindowsNonControl.cs
- ServiceDescriptionImporter.cs
- DesigntimeLicenseContextSerializer.cs
- UnaryExpressionHelper.cs
- GB18030Encoding.cs
- _SSPIWrapper.cs
- CorrelationManager.cs
- DataGridViewCellStyle.cs
- PerformanceCountersElement.cs
- WindowsScrollBar.cs
- OfTypeExpression.cs
- DtdParser.cs
- MD5CryptoServiceProvider.cs
- GraphicsContext.cs
- PasswordBoxAutomationPeer.cs
- TriggerCollection.cs
- DataError.cs
- HttpProfileBase.cs
- ActiveXHost.cs
- ReliableChannelListener.cs
- ContentOperations.cs
- OleDbReferenceCollection.cs
- DateRangeEvent.cs
- Version.cs
- ManagementOperationWatcher.cs
- IntPtr.cs
- MessageBox.cs
- TrackingProfileSerializer.cs
- SingleConverter.cs
- RelatedCurrencyManager.cs
- SerialPinChanges.cs
- TreeNode.cs
- ValidatorCollection.cs
- SoapIgnoreAttribute.cs
- LineMetrics.cs
- PrintDialog.cs
- AppDomainAttributes.cs
- WebBrowserUriTypeConverter.cs
- UxThemeWrapper.cs
- TaskFormBase.cs
- CommandBindingCollection.cs
- HtmlControl.cs
- TransformationRules.cs
- QueryContinueDragEvent.cs
- DataViewManager.cs
- PageThemeBuildProvider.cs
- SQLRoleProvider.cs
- DataGridViewSortCompareEventArgs.cs
- CheckPair.cs
- RijndaelCryptoServiceProvider.cs
- ToolStripDropDown.cs
- HttpCacheVaryByContentEncodings.cs
- DesignerTransactionCloseEvent.cs
- EventLogEntryCollection.cs
- CalendarDay.cs
- TransformPattern.cs
- TraceContextRecord.cs
- FixedSOMImage.cs
- SectionRecord.cs
- PageSetupDialog.cs
- AnnotationResource.cs
- TextCompositionManager.cs
- SHA384Managed.cs
- WebControlToolBoxItem.cs
- PLINQETWProvider.cs
- ContextMenu.cs
- WebBrowsableAttribute.cs
- Padding.cs
- x509utils.cs
- keycontainerpermission.cs
- BuildResult.cs
- OptimizedTemplateContent.cs
- TableItemStyle.cs
- EntityContainer.cs
- Model3DGroup.cs
- SmtpNtlmAuthenticationModule.cs
- ClientSettingsProvider.cs
- RuntimeResourceSet.cs
- BinaryExpression.cs
- ToolStripProgressBar.cs
- _Events.cs
- TableLayoutStyle.cs