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
- StatusBarItem.cs
- ListViewGroupItemCollection.cs
- MailHeaderInfo.cs
- ImmutableObjectAttribute.cs
- DesignerView.cs
- SqlCommand.cs
- ProfileProvider.cs
- ConfigurationValidatorAttribute.cs
- CommandField.cs
- MulticastIPAddressInformationCollection.cs
- WMIGenerator.cs
- ExceptionUtility.cs
- StrongNameIdentityPermission.cs
- NameValueFileSectionHandler.cs
- HtmlInputText.cs
- XmlQuerySequence.cs
- MinimizableAttributeTypeConverter.cs
- CollectionContainer.cs
- AngleUtil.cs
- RegisteredScript.cs
- XmlUnspecifiedAttribute.cs
- CustomWebEventKey.cs
- _Connection.cs
- Completion.cs
- RTLAwareMessageBox.cs
- CacheChildrenQuery.cs
- DynamicDataRouteHandler.cs
- ApplicationServiceHelper.cs
- EventSinkHelperWriter.cs
- FileDialogPermission.cs
- MouseEventArgs.cs
- SQLUtility.cs
- WindowsListViewGroupHelper.cs
- AttachmentCollection.cs
- XmlBinaryReaderSession.cs
- HtmlCalendarAdapter.cs
- HandledMouseEvent.cs
- ButtonDesigner.cs
- NoClickablePointException.cs
- webclient.cs
- ProviderUtil.cs
- GPRECTF.cs
- DiscoveryProxy.cs
- Maps.cs
- LinqMaximalSubtreeNominator.cs
- GlobalizationAssembly.cs
- DbConnectionPoolGroupProviderInfo.cs
- Environment.cs
- TableColumn.cs
- ConfigDefinitionUpdates.cs
- Activation.cs
- DataProtectionSecurityStateEncoder.cs
- DataGridCellsPanel.cs
- Preprocessor.cs
- AsymmetricAlgorithm.cs
- ListComponentEditor.cs
- WebReferencesBuildProvider.cs
- SafeSystemMetrics.cs
- XPathParser.cs
- DeviceContexts.cs
- BaseDataList.cs
- VideoDrawing.cs
- Tuple.cs
- ClientSection.cs
- FunctionQuery.cs
- LogExtentCollection.cs
- IPPacketInformation.cs
- XmlSchemaObject.cs
- FixedSchema.cs
- SplashScreenNativeMethods.cs
- ExtendedProperty.cs
- WebHttpElement.cs
- VariableBinder.cs
- DataPagerFieldCollection.cs
- WindowsComboBox.cs
- BitmapEffectDrawingContextWalker.cs
- PageSetupDialog.cs
- DtrList.cs
- PropertyMetadata.cs
- IDQuery.cs
- XmlSchemaDocumentation.cs
- WebPartConnectionsConfigureVerb.cs
- UTF7Encoding.cs
- FormDesigner.cs
- HiddenFieldPageStatePersister.cs
- ListViewUpdatedEventArgs.cs
- StrokeCollection.cs
- ParsedAttributeCollection.cs
- DragEventArgs.cs
- PlatformNotSupportedException.cs
- Storyboard.cs
- ItemCollectionEditor.cs
- InputLanguage.cs
- JavaScriptSerializer.cs
- IgnoreFileBuildProvider.cs
- QilIterator.cs
- InteropTrackingRecord.cs
- BamlVersionHeader.cs
- InkPresenter.cs
- AutomationPeer.cs