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
- VisualStyleElement.cs
- MessageSecurityException.cs
- PasswordDeriveBytes.cs
- PeerCollaborationPermission.cs
- LeaseManager.cs
- ItemPager.cs
- FunctionMappingTranslator.cs
- EntityContainerEntitySet.cs
- ContourSegment.cs
- SqlComparer.cs
- AutomationPatternInfo.cs
- ScrollPattern.cs
- XmlWhitespace.cs
- Component.cs
- HtmlEmptyTagControlBuilder.cs
- DataGridViewCellStyleEditor.cs
- ListViewItemCollectionEditor.cs
- EntityCommandDefinition.cs
- WebPartsSection.cs
- CurrentTimeZone.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- RequestCachePolicyConverter.cs
- ScriptMethodAttribute.cs
- DockPanel.cs
- FormView.cs
- MasterPage.cs
- DiscreteKeyFrames.cs
- ScrollPatternIdentifiers.cs
- Viewport2DVisual3D.cs
- OdbcTransaction.cs
- LongTypeConverter.cs
- AlphaSortedEnumConverter.cs
- HostProtectionPermission.cs
- DashStyle.cs
- MethodExpr.cs
- AutoResizedEvent.cs
- ArrayList.cs
- GridViewItemAutomationPeer.cs
- CreatingCookieEventArgs.cs
- BindingListCollectionView.cs
- ValueTypeFieldReference.cs
- Rotation3DKeyFrameCollection.cs
- Renderer.cs
- FontWeightConverter.cs
- ObjectViewQueryResultData.cs
- LineServicesCallbacks.cs
- Number.cs
- PropertyValueUIItem.cs
- StylusTip.cs
- DataGridViewComboBoxColumn.cs
- Set.cs
- ObjectHelper.cs
- TextFormatterImp.cs
- DataListItemEventArgs.cs
- SqlException.cs
- XmlSignificantWhitespace.cs
- NumberFormatter.cs
- WebPartMovingEventArgs.cs
- LogicalMethodInfo.cs
- SoapSchemaImporter.cs
- StateBag.cs
- OleDbRowUpdatedEvent.cs
- Config.cs
- EnvironmentPermission.cs
- BitmapEffectInput.cs
- InkPresenterAutomationPeer.cs
- ScalarConstant.cs
- WebPartCloseVerb.cs
- DataGridViewColumn.cs
- CommandDevice.cs
- GraphicsPathIterator.cs
- SplitContainerDesigner.cs
- BamlResourceContent.cs
- HttpClientChannel.cs
- RectKeyFrameCollection.cs
- MembershipValidatePasswordEventArgs.cs
- SystemException.cs
- WindowsAuthenticationEventArgs.cs
- TextSpan.cs
- CaretElement.cs
- RelationshipType.cs
- FullTextLine.cs
- TemplateParser.cs
- SkipQueryOptionExpression.cs
- dbdatarecord.cs
- RichTextBox.cs
- DelayLoadType.cs
- MemberDescriptor.cs
- TextElementCollectionHelper.cs
- SqlFacetAttribute.cs
- UrlAuthFailureHandler.cs
- DataGridViewAutoSizeModeEventArgs.cs
- GraphicsContainer.cs
- SystemIPGlobalProperties.cs
- XmlSchemaComplexContentRestriction.cs
- DataGridViewCellStateChangedEventArgs.cs
- PropertyCollection.cs
- XmlQualifiedName.cs
- AnnotationComponentChooser.cs
- Vector3DValueSerializer.cs