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
- HttpVersion.cs
- XamlReader.cs
- loginstatus.cs
- Parallel.cs
- TextElementEditingBehaviorAttribute.cs
- AttributeEmitter.cs
- FormViewDeletedEventArgs.cs
- Quack.cs
- DoWorkEventArgs.cs
- HwndAppCommandInputProvider.cs
- FixedPageAutomationPeer.cs
- Vector3DKeyFrameCollection.cs
- NameObjectCollectionBase.cs
- FormsIdentity.cs
- SelectionRange.cs
- SoapIgnoreAttribute.cs
- XNameConverter.cs
- NullableIntMinMaxAggregationOperator.cs
- XmlIterators.cs
- Menu.cs
- SqlTrackingService.cs
- IgnoreFileBuildProvider.cs
- ExpressionUtilities.cs
- XmlSerializerSection.cs
- UnsafeNativeMethods.cs
- QuaternionAnimationUsingKeyFrames.cs
- DocComment.cs
- SpeechSeg.cs
- FamilyMap.cs
- StreamInfo.cs
- TreeViewHitTestInfo.cs
- MessageSecurityOverHttp.cs
- CompilationPass2Task.cs
- DbConnectionPoolGroupProviderInfo.cs
- CollectionTraceRecord.cs
- StringDictionary.cs
- FlowDocument.cs
- RowBinding.cs
- BaseDataBoundControl.cs
- ISAPIRuntime.cs
- Soap.cs
- BitmapEffectInput.cs
- InvalidPrinterException.cs
- BinaryMethodMessage.cs
- DbConnectionPool.cs
- XmlElementAttribute.cs
- NumericPagerField.cs
- MemberHolder.cs
- RoleProviderPrincipal.cs
- FrameworkElement.cs
- ColumnReorderedEventArgs.cs
- UpdateManifestForBrowserApplication.cs
- SettingsAttributeDictionary.cs
- ObjectListCommandCollection.cs
- HtmlToClrEventProxy.cs
- AbsoluteQuery.cs
- InstanceDataCollection.cs
- PerformanceCounterTraceRecord.cs
- Region.cs
- CurrentChangingEventManager.cs
- LinkClickEvent.cs
- CompilerError.cs
- Activation.cs
- HtmlForm.cs
- ThreadExceptionEvent.cs
- streamingZipPartStream.cs
- NumberFunctions.cs
- SourceFileBuildProvider.cs
- ArrayTypeMismatchException.cs
- ConstrainedGroup.cs
- DeploymentExceptionMapper.cs
- CommandExpr.cs
- TemplateKey.cs
- RawStylusInputCustomDataList.cs
- EntityKeyElement.cs
- CodeDOMProvider.cs
- XmlReaderDelegator.cs
- RegexParser.cs
- EmptyControlCollection.cs
- FloatAverageAggregationOperator.cs
- TimeSpanSecondsConverter.cs
- ComponentEditorForm.cs
- StatusBarDrawItemEvent.cs
- XmlTypeAttribute.cs
- TableProviderWrapper.cs
- XmlAnyElementAttributes.cs
- DockAndAnchorLayout.cs
- TextBox.cs
- SqlIdentifier.cs
- LogArchiveSnapshot.cs
- SchemaObjectWriter.cs
- DurationConverter.cs
- ReadOnlyObservableCollection.cs
- FragmentQueryKB.cs
- DoubleLinkList.cs
- IisTraceWebEventProvider.cs
- SapiAttributeParser.cs
- ComponentSerializationService.cs
- Stroke.cs
- DependencyPropertyConverter.cs