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
- PhysicalAddress.cs
- Convert.cs
- ContainerCodeDomSerializer.cs
- ResourceDictionary.cs
- RenderingEventArgs.cs
- util.cs
- DrawingContext.cs
- XPathAxisIterator.cs
- IssuanceLicense.cs
- NotifyParentPropertyAttribute.cs
- RoutedUICommand.cs
- Parallel.cs
- Parser.cs
- SqlStream.cs
- DataFormat.cs
- PolyLineSegmentFigureLogic.cs
- RoutedCommand.cs
- MimeWriter.cs
- Properties.cs
- ValidationHelpers.cs
- CommentAction.cs
- UnmanagedMemoryStreamWrapper.cs
- BufferedGraphics.cs
- BufferBuilder.cs
- OleDbException.cs
- DesignSurfaceCollection.cs
- ListBindingConverter.cs
- WinEventTracker.cs
- SeverityFilter.cs
- PictureBox.cs
- RelationshipDetailsRow.cs
- SQLSingleStorage.cs
- EntityDataReader.cs
- MetadataArtifactLoader.cs
- InfiniteTimeSpanConverter.cs
- HorizontalAlignConverter.cs
- ComponentRenameEvent.cs
- EventSetter.cs
- FunctionParameter.cs
- XhtmlBasicControlAdapter.cs
- ArgumentNullException.cs
- Roles.cs
- DescendantQuery.cs
- CustomExpression.cs
- Int16Animation.cs
- XmlCharType.cs
- VersionPair.cs
- ParameterModifier.cs
- UniqueConstraint.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- LineBreakRecord.cs
- SspiHelper.cs
- DependentList.cs
- JoinElimination.cs
- IconEditor.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- _NetRes.cs
- CommonGetThemePartSize.cs
- IPEndPoint.cs
- ValueType.cs
- FolderNameEditor.cs
- GridEntryCollection.cs
- MenuItem.cs
- SqlDependency.cs
- RadialGradientBrush.cs
- StorageFunctionMapping.cs
- SqlDataSourceCustomCommandEditor.cs
- dsa.cs
- StringDictionary.cs
- EventManager.cs
- WindowsSecurityTokenAuthenticator.cs
- TableLayoutRowStyleCollection.cs
- WindowsFormsDesignerOptionService.cs
- NonSerializedAttribute.cs
- TextEditorSpelling.cs
- TreeNodeBindingCollection.cs
- UnionCqlBlock.cs
- WebPartEditorCancelVerb.cs
- SafeSecurityHelper.cs
- CallbackValidator.cs
- BitmapData.cs
- ContentType.cs
- ExecutionEngineException.cs
- RunInstallerAttribute.cs
- ScriptHandlerFactory.cs
- SourceInterpreter.cs
- EntitySet.cs
- PenThreadPool.cs
- GetReadStreamResult.cs
- BitHelper.cs
- SecurityHeader.cs
- ThreadAttributes.cs
- DBCommandBuilder.cs
- ChildTable.cs
- Focus.cs
- System.Data.OracleClient_BID.cs
- SimpleTableProvider.cs
- ScriptReferenceEventArgs.cs
- PerspectiveCamera.cs
- HybridWebProxyFinder.cs