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 / 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
- EventItfInfo.cs
- EventProviderWriter.cs
- DataGridViewHeaderCell.cs
- EasingKeyFrames.cs
- Code.cs
- PowerModeChangedEventArgs.cs
- PageThemeBuildProvider.cs
- SvcMapFileLoader.cs
- DependencyObjectPropertyDescriptor.cs
- TerminateDesigner.cs
- CleanUpVirtualizedItemEventArgs.cs
- CFStream.cs
- XmlSchemaGroupRef.cs
- CalendarDesigner.cs
- RealProxy.cs
- EventData.cs
- KeyProperty.cs
- ItemType.cs
- JsonQueryStringConverter.cs
- FrameSecurityDescriptor.cs
- VerificationException.cs
- QueryExpr.cs
- RemotingServices.cs
- DataGridPageChangedEventArgs.cs
- LineGeometry.cs
- ErrorLog.cs
- WebResourceAttribute.cs
- PeerObject.cs
- IssuedTokenClientBehaviorsElementCollection.cs
- ObjectTag.cs
- MailBnfHelper.cs
- CompositionTarget.cs
- NumberSubstitution.cs
- WebBrowserNavigatedEventHandler.cs
- ClickablePoint.cs
- TreeNodeMouseHoverEvent.cs
- SecurityState.cs
- RequestNavigateEventArgs.cs
- TimeZone.cs
- _NestedSingleAsyncResult.cs
- StrongNameKeyPair.cs
- HtmlButton.cs
- MimeTypeMapper.cs
- EncoderExceptionFallback.cs
- LinkedList.cs
- FormViewDeleteEventArgs.cs
- DynamicQueryableWrapper.cs
- InheritanceUI.cs
- CellCreator.cs
- InternalPolicyElement.cs
- ProcessHostFactoryHelper.cs
- TreeChangeInfo.cs
- CodeAttributeDeclarationCollection.cs
- UserControlParser.cs
- HitTestWithPointDrawingContextWalker.cs
- TypeReference.cs
- HScrollBar.cs
- BindableTemplateBuilder.cs
- Utils.cs
- XmlMembersMapping.cs
- ProcessModule.cs
- DrawListViewItemEventArgs.cs
- handlecollector.cs
- DocumentViewerAutomationPeer.cs
- DbInsertCommandTree.cs
- WhitespaceSignificantCollectionAttribute.cs
- DataGridCommandEventArgs.cs
- AuthorizationContext.cs
- XmlSchemaException.cs
- WebPartConnectionsConfigureVerb.cs
- CustomAttributeSerializer.cs
- CompilerWrapper.cs
- SafeArrayTypeMismatchException.cs
- ProtectedConfigurationSection.cs
- UserNameSecurityToken.cs
- BookmarkEventArgs.cs
- SpellerError.cs
- DynamicEntity.cs
- Mouse.cs
- EmptyEnumerator.cs
- SyntaxCheck.cs
- XpsFilter.cs
- ConfigXmlText.cs
- MsmqUri.cs
- DataPagerCommandEventArgs.cs
- CharacterShapingProperties.cs
- UrlAuthFailureHandler.cs
- AlgoModule.cs
- AddInAttribute.cs
- LayoutInformation.cs
- SHA384.cs
- TextSpanModifier.cs
- ObjectListGeneralPage.cs
- SafeProcessHandle.cs
- TextTrailingCharacterEllipsis.cs
- MenuCommands.cs
- HttpGetClientProtocol.cs
- HttpRequestContext.cs
- TreeViewEvent.cs
- StringArrayEditor.cs