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
- FixedTextContainer.cs
- FreezableOperations.cs
- ListChangedEventArgs.cs
- InputBindingCollection.cs
- TouchFrameEventArgs.cs
- AssemblyInfo.cs
- SessionState.cs
- CssStyleCollection.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Path.cs
- KeyboardEventArgs.cs
- HttpModuleActionCollection.cs
- XmlMembersMapping.cs
- SQLByte.cs
- TripleDESCryptoServiceProvider.cs
- Encoder.cs
- QilNode.cs
- IndentTextWriter.cs
- ThrowHelper.cs
- OperationExecutionFault.cs
- Hex.cs
- CodeExpressionStatement.cs
- CustomExpressionEventArgs.cs
- RuleSettingsCollection.cs
- VarRefManager.cs
- DateTimeConstantAttribute.cs
- NonVisualControlAttribute.cs
- MenuRenderer.cs
- IntegerFacetDescriptionElement.cs
- CachedFontFace.cs
- SchemaLookupTable.cs
- Sorting.cs
- ToolboxItemCollection.cs
- OutKeywords.cs
- LinqDataSourceDeleteEventArgs.cs
- DataGridRowHeaderAutomationPeer.cs
- OdbcConnectionString.cs
- CalendarDay.cs
- DesignerSelectionListAdapter.cs
- SequentialUshortCollection.cs
- BaseUriHelper.cs
- PermissionRequestEvidence.cs
- AspCompat.cs
- Rectangle.cs
- SingleAnimation.cs
- HelpInfo.cs
- NonVisualControlAttribute.cs
- DataList.cs
- ContentPosition.cs
- SrgsElementList.cs
- DeferredSelectedIndexReference.cs
- Int16.cs
- handlecollector.cs
- FilteredSchemaElementLookUpTable.cs
- ReferencedCollectionType.cs
- CheckBoxPopupAdapter.cs
- GeometryHitTestResult.cs
- Endpoint.cs
- __ConsoleStream.cs
- SmtpTransport.cs
- ChannelSinkStacks.cs
- HttpWebResponse.cs
- CultureInfoConverter.cs
- HijriCalendar.cs
- PerformanceCounterManager.cs
- SQLInt16Storage.cs
- ObjectTypeMapping.cs
- SqlGatherConsumedAliases.cs
- Lease.cs
- Light.cs
- Compiler.cs
- FixedTextSelectionProcessor.cs
- PolyBezierSegment.cs
- TypedServiceChannelBuilder.cs
- ToolTipAutomationPeer.cs
- WebContentFormatHelper.cs
- Model3DCollection.cs
- CodeTypeConstructor.cs
- IntSecurity.cs
- PresentationAppDomainManager.cs
- XPathScanner.cs
- DbConnectionPoolGroupProviderInfo.cs
- IISUnsafeMethods.cs
- EntityKey.cs
- Frame.cs
- SqlConnection.cs
- PlanCompilerUtil.cs
- AppLevelCompilationSectionCache.cs
- PersonalizationStateInfo.cs
- StrongNameSignatureInformation.cs
- ProcessModelSection.cs
- FontTypeConverter.cs
- While.cs
- ListItemCollection.cs
- DLinqDataModelProvider.cs
- StringHelper.cs
- SessionPageStatePersister.cs
- DbConvert.cs
- HWStack.cs
- Constraint.cs