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
- Profiler.cs
- ReflectEventDescriptor.cs
- KeyMatchBuilder.cs
- Int32KeyFrameCollection.cs
- SqlUtil.cs
- WebPartConnectionsCloseVerb.cs
- DictionaryBase.cs
- PolyQuadraticBezierSegment.cs
- Expression.DebuggerProxy.cs
- RealizationDrawingContextWalker.cs
- MetadataArtifactLoaderFile.cs
- MonitoringDescriptionAttribute.cs
- _ListenerResponseStream.cs
- SystemFonts.cs
- ViewStateModeByIdAttribute.cs
- ContextMenu.cs
- ObjectQueryExecutionPlan.cs
- SpanIndex.cs
- ToolStripRendererSwitcher.cs
- CapiNative.cs
- EncryptedPackage.cs
- FormatConvertedBitmap.cs
- CodeGeneratorAttribute.cs
- DataPagerCommandEventArgs.cs
- MemberDescriptor.cs
- TreeWalkHelper.cs
- ProfileModule.cs
- IgnoreFileBuildProvider.cs
- ToolbarAUtomationPeer.cs
- ManagementNamedValueCollection.cs
- TileBrush.cs
- ConditionedDesigner.cs
- Pkcs7Signer.cs
- UInt64Storage.cs
- TextRange.cs
- DBProviderConfigurationHandler.cs
- ThousandthOfEmRealDoubles.cs
- WebBrowserBase.cs
- DocumentStatusResources.cs
- Table.cs
- DependencyObjectPropertyDescriptor.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CheckBoxDesigner.cs
- HttpListener.cs
- WarningException.cs
- ChameleonKey.cs
- PolicyDesigner.cs
- DecimalAnimationUsingKeyFrames.cs
- StandardCommands.cs
- Form.cs
- SkewTransform.cs
- BaseCodePageEncoding.cs
- SecurityPermission.cs
- FrugalMap.cs
- Command.cs
- newitemfactory.cs
- StrokeNodeData.cs
- LogLogRecord.cs
- SqlCacheDependencySection.cs
- RequestCachingSection.cs
- GenericParameterDataContract.cs
- AsymmetricKeyExchangeFormatter.cs
- SafeFileHandle.cs
- METAHEADER.cs
- ArglessEventHandlerProxy.cs
- PagesChangedEventArgs.cs
- SecurityManager.cs
- CompositeControl.cs
- PageThemeBuildProvider.cs
- SqlRetyper.cs
- ContractMethodInfo.cs
- RemoteWebConfigurationHostServer.cs
- ColumnClickEvent.cs
- MD5.cs
- IsolatedStorageException.cs
- storepermissionattribute.cs
- PeerCollaboration.cs
- DbReferenceCollection.cs
- StaticDataManager.cs
- ObjectViewEntityCollectionData.cs
- FolderLevelBuildProvider.cs
- BamlMapTable.cs
- CodeTypeReferenceCollection.cs
- SettingsBindableAttribute.cs
- AdapterUtil.cs
- DoubleCollectionValueSerializer.cs
- DocumentScope.cs
- AQNBuilder.cs
- WebPartConnectionsCloseVerb.cs
- Rules.cs
- FrameAutomationPeer.cs
- EvidenceTypeDescriptor.cs
- XPathSingletonIterator.cs
- GroupedContextMenuStrip.cs
- SessionStateSection.cs
- ObjectNotFoundException.cs
- ActivityCodeDomSerializationManager.cs
- MarkupObject.cs
- SmtpNegotiateAuthenticationModule.cs
- WebPartMinimizeVerb.cs