Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RawAppCommandInputReport.cs
- CodeAttributeArgumentCollection.cs
- PreloadedPackages.cs
- AnnotationResourceCollection.cs
- PictureBox.cs
- DiffuseMaterial.cs
- ResourceManagerWrapper.cs
- TypeConverterValueSerializer.cs
- TextEvent.cs
- Dictionary.cs
- EntityAdapter.cs
- KerberosReceiverSecurityToken.cs
- Int32EqualityComparer.cs
- ProtocolsSection.cs
- AuthenticatingEventArgs.cs
- XmlWriterTraceListener.cs
- ExpressionParser.cs
- BaseTemplateParser.cs
- ToolStripSystemRenderer.cs
- WindowShowOrOpenTracker.cs
- NavigationFailedEventArgs.cs
- ThreadPoolTaskScheduler.cs
- DataDocumentXPathNavigator.cs
- CodeMemberMethod.cs
- GlyphRun.cs
- DatatypeImplementation.cs
- SplitterCancelEvent.cs
- UserControlCodeDomTreeGenerator.cs
- CodeTypeConstructor.cs
- TdsValueSetter.cs
- LineInfo.cs
- Repeater.cs
- RadioButtonList.cs
- ProjectionPlan.cs
- ArraySortHelper.cs
- ListViewGroupItemCollection.cs
- DataBindingList.cs
- AnnotationComponentChooser.cs
- RadioButton.cs
- XmlSchemaRedefine.cs
- ToolBarOverflowPanel.cs
- GradientBrush.cs
- SerialStream.cs
- storepermission.cs
- BaseDataBoundControlDesigner.cs
- ReadOnlyDataSourceView.cs
- SecurityListenerSettingsLifetimeManager.cs
- PartialCachingAttribute.cs
- Listbox.cs
- CommonDialog.cs
- SqlDataSourceStatusEventArgs.cs
- InvalidCommandTreeException.cs
- TableLayoutSettingsTypeConverter.cs
- AddInPipelineAttributes.cs
- HostedElements.cs
- LogManagementAsyncResult.cs
- BindUriHelper.cs
- IndexedEnumerable.cs
- DescriptionAttribute.cs
- Label.cs
- elementinformation.cs
- WebPartConnectionsConfigureVerb.cs
- NativeObjectSecurity.cs
- PackageRelationshipSelector.cs
- MethodBody.cs
- InstanceLockLostException.cs
- XmlDictionary.cs
- VectorCollection.cs
- DeflateStream.cs
- smtppermission.cs
- BitArray.cs
- BitmapEditor.cs
- CodeExpressionCollection.cs
- PopupRoot.cs
- FunctionDetailsReader.cs
- Command.cs
- ShapeTypeface.cs
- DataGridTablesFactory.cs
- DrawingAttributes.cs
- TableCellCollection.cs
- ByteViewer.cs
- DataRowView.cs
- EntityProviderFactory.cs
- WebPartCloseVerb.cs
- EnumType.cs
- HttpCookieCollection.cs
- InputLanguageProfileNotifySink.cs
- FileUpload.cs
- DataGridViewImageCell.cs
- CloseSequenceResponse.cs
- ReflectionTypeLoadException.cs
- ToolStripItem.cs
- CharEnumerator.cs
- OpCellTreeNode.cs
- Listen.cs
- PipeSecurity.cs
- TaskForm.cs
- WindowCollection.cs
- SelectionRange.cs
- UserControlParser.cs