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
- remotingproxy.cs
- UnsafeNativeMethodsTablet.cs
- DetailsViewRow.cs
- AuthenticationSection.cs
- KeyEvent.cs
- ReaderOutput.cs
- Pool.cs
- UnsafeNativeMethodsTablet.cs
- ZoneMembershipCondition.cs
- ProfilePropertyNameValidator.cs
- XmlBinaryWriter.cs
- MultiByteCodec.cs
- HtmlElementCollection.cs
- TreeViewItem.cs
- ObjectTag.cs
- SoapReflectionImporter.cs
- XmlAttributeCollection.cs
- PermissionRequestEvidence.cs
- ButtonBase.cs
- UrlMappingsModule.cs
- InnerItemCollectionView.cs
- XmlArrayItemAttributes.cs
- ResourceSet.cs
- PageAdapter.cs
- RoleExceptions.cs
- VirtualizingPanel.cs
- DataTableReaderListener.cs
- InvalidCommandTreeException.cs
- ComboBoxRenderer.cs
- SplineQuaternionKeyFrame.cs
- ServiceOperationViewControl.cs
- DictionaryEntry.cs
- RsaEndpointIdentity.cs
- PropertyEntry.cs
- StaticSiteMapProvider.cs
- RequestUriProcessor.cs
- SqlDesignerDataSourceView.cs
- OdbcPermission.cs
- ExecutionContext.cs
- WindowsFormsHelpers.cs
- mansign.cs
- HttpListener.cs
- ObjectDataSourceStatusEventArgs.cs
- RowUpdatedEventArgs.cs
- DetailsViewActionList.cs
- WebZone.cs
- NavigationProperty.cs
- TextBoxBase.cs
- XmlSchemaAnnotation.cs
- HttpModulesSection.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- XmlSchemaExternal.cs
- objectresult_tresulttype.cs
- InplaceBitmapMetadataWriter.cs
- ModelUIElement3D.cs
- BaseDataBoundControl.cs
- CircleHotSpot.cs
- BaseCollection.cs
- NativeMethods.cs
- FunctionImportMapping.cs
- ReferenceService.cs
- ToolStripPanelRenderEventArgs.cs
- UnsafeNativeMethods.cs
- SqlError.cs
- ParallelTimeline.cs
- QueryCursorEventArgs.cs
- WebControl.cs
- SingleAnimationBase.cs
- ParameterReplacerVisitor.cs
- CompilerError.cs
- FaultContractInfo.cs
- ClientProxyGenerator.cs
- SelectedCellsCollection.cs
- SupportingTokenSpecification.cs
- ArglessEventHandlerProxy.cs
- InputScopeAttribute.cs
- DisplayNameAttribute.cs
- Rotation3D.cs
- SliderAutomationPeer.cs
- Currency.cs
- ConfigXmlReader.cs
- ParseChildrenAsPropertiesAttribute.cs
- FontStretch.cs
- GeometryDrawing.cs
- StylusPointCollection.cs
- TcpHostedTransportConfiguration.cs
- DrawingVisual.cs
- FixedSOMPageElement.cs
- FixedSOMTable.cs
- RuntimeConfig.cs
- TextEditorSelection.cs
- SubMenuStyleCollection.cs
- CleanUpVirtualizedItemEventArgs.cs
- ResourceSet.cs
- BeginStoryboard.cs
- TemplatedWizardStep.cs
- XamlContextStack.cs
- XmlBaseWriter.cs
- PerformanceCounterManager.cs
- XmlSchemaSequence.cs