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
- ResourceContainerWrapper.cs
- TreeNodeStyleCollectionEditor.cs
- MetadataPropertyCollection.cs
- CriticalExceptions.cs
- Trace.cs
- AutomationPropertyInfo.cs
- InternalConfigSettingsFactory.cs
- DesignerCategoryAttribute.cs
- AttributeQuery.cs
- SettingsPropertyValueCollection.cs
- IndentedWriter.cs
- SecurityToken.cs
- SerializationFieldInfo.cs
- ClientUrlResolverWrapper.cs
- XmlNodeChangedEventArgs.cs
- CSharpCodeProvider.cs
- KeyInterop.cs
- ProfileSettingsCollection.cs
- KeyValueSerializer.cs
- sitestring.cs
- XmlQueryOutput.cs
- HtmlInputFile.cs
- SizeAnimationUsingKeyFrames.cs
- SqlCacheDependencySection.cs
- Roles.cs
- Queue.cs
- WindowsRebar.cs
- CodeDirectoryCompiler.cs
- IssuanceLicense.cs
- WebPartManager.cs
- PageRanges.cs
- EventPropertyMap.cs
- AdRotator.cs
- ToolBarOverflowPanel.cs
- TextModifierScope.cs
- oledbconnectionstring.cs
- BinaryCommonClasses.cs
- WorkflowRuntime.cs
- ContextMarshalException.cs
- DataGridColumn.cs
- SafeRightsManagementEnvironmentHandle.cs
- DynamicRendererThreadManager.cs
- HttpServerChannel.cs
- AuthorizationRuleCollection.cs
- LocatorPartList.cs
- ITreeGenerator.cs
- SystemParameters.cs
- BitmapVisualManager.cs
- SelectionProcessor.cs
- EntitySetRetriever.cs
- DataServiceRequest.cs
- OleDbPermission.cs
- DnsPermission.cs
- ToolBarButtonClickEvent.cs
- LostFocusEventManager.cs
- InlineObject.cs
- ToolStrip.cs
- CodeSnippetExpression.cs
- HttpCapabilitiesBase.cs
- ValidateNames.cs
- EntityWrapper.cs
- RelationshipEndCollection.cs
- TemplateControlBuildProvider.cs
- System.Data_BID.cs
- StyleCollection.cs
- ClientCultureInfo.cs
- Cursors.cs
- MethodToken.cs
- MsmqIntegrationBinding.cs
- GraphicsPathIterator.cs
- TextSegment.cs
- Schedule.cs
- WebPageTraceListener.cs
- keycontainerpermission.cs
- TransactionException.cs
- ExceptionUtil.cs
- ExceptionRoutedEventArgs.cs
- DiscoveryInnerClientAdhoc11.cs
- NetSectionGroup.cs
- AccessedThroughPropertyAttribute.cs
- AbstractDataSvcMapFileLoader.cs
- XamlToRtfWriter.cs
- RoleGroup.cs
- Select.cs
- DesignerVerb.cs
- SystemSounds.cs
- WebPartConnectVerb.cs
- DeploymentSection.cs
- ReadOnlyCollectionBase.cs
- ExpressionReplacer.cs
- SqlProviderUtilities.cs
- Cursors.cs
- MeasurementDCInfo.cs
- ResourceReferenceExpressionConverter.cs
- securitycriticaldataformultiplegetandset.cs
- Menu.cs
- SqlCacheDependencyDatabaseCollection.cs
- QilInvokeEarlyBound.cs
- HashMembershipCondition.cs
- HtmlElementErrorEventArgs.cs