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
- SiteMapDataSourceView.cs
- StringFreezingAttribute.cs
- LinkArea.cs
- ManagementQuery.cs
- Stream.cs
- GestureRecognitionResult.cs
- FakeModelItemImpl.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- DesignerGenericWebPart.cs
- HttpBufferlessInputStream.cs
- ToolCreatedEventArgs.cs
- TemplatePropertyEntry.cs
- XmlNodeChangedEventManager.cs
- PointAnimation.cs
- PackageRelationshipCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- ClientSettingsStore.cs
- LongValidator.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- MappingModelBuildProvider.cs
- ProviderBase.cs
- MetadataCache.cs
- StateItem.cs
- XdrBuilder.cs
- FormsAuthenticationModule.cs
- VoiceInfo.cs
- ColumnPropertiesGroup.cs
- StateChangeEvent.cs
- TextAdaptor.cs
- WorkflowPageSetupDialog.cs
- AssociatedControlConverter.cs
- XmlSchemaIdentityConstraint.cs
- WindowsNonControl.cs
- CompletedAsyncResult.cs
- SqlDataSourceCache.cs
- ObjectQuery_EntitySqlExtensions.cs
- Membership.cs
- Activator.cs
- SoapAttributeOverrides.cs
- Control.cs
- FormViewCommandEventArgs.cs
- Buffer.cs
- PointCollection.cs
- SourceItem.cs
- XamlClipboardData.cs
- HashRepartitionStream.cs
- ArraySegment.cs
- IndependentAnimationStorage.cs
- ReferencedCollectionType.cs
- BooleanStorage.cs
- ImageButton.cs
- AttributeProviderAttribute.cs
- HostVisual.cs
- HMACSHA1.cs
- DataGridViewComponentPropertyGridSite.cs
- TextDocumentView.cs
- TrustSection.cs
- FieldAccessException.cs
- ClientOptions.cs
- DictionaryItemsCollection.cs
- SchemeSettingElementCollection.cs
- ChameleonKey.cs
- Enlistment.cs
- ItemAutomationPeer.cs
- TrustLevel.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- IOException.cs
- TemplateControlCodeDomTreeGenerator.cs
- Point3DCollection.cs
- WindowsAuthenticationEventArgs.cs
- ModulesEntry.cs
- WebPartMenuStyle.cs
- BaseDataBoundControl.cs
- StoryFragments.cs
- FamilyMapCollection.cs
- FillBehavior.cs
- SchemaImporterExtensionElementCollection.cs
- PropertyInformation.cs
- SchemaTableOptionalColumn.cs
- RenderingEventArgs.cs
- EditorZoneDesigner.cs
- LazyTextWriterCreator.cs
- ClientCredentialsSecurityTokenManager.cs
- ResolveRequestResponseAsyncResult.cs
- OletxVolatileEnlistment.cs
- StorageMappingItemLoader.cs
- EnumConverter.cs
- KeyEventArgs.cs
- Image.cs
- ExpressionEvaluator.cs
- ControlIdConverter.cs
- ToolStripScrollButton.cs
- ComponentResourceManager.cs
- TextDpi.cs
- UIElementParagraph.cs
- UserMapPath.cs
- BCLDebug.cs
- PartialArray.cs
- EntityDesignerUtils.cs
- CultureSpecificCharacterBufferRange.cs