Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Validation / ExtentKey.cs / 1 / 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. //---------------------------------------------------------------------- // // 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
- DecimalAnimation.cs
- ItemMap.cs
- RayMeshGeometry3DHitTestResult.cs
- UrlAuthFailedErrorFormatter.cs
- TagMapCollection.cs
- KnownTypeAttribute.cs
- CreateUserWizardAutoFormat.cs
- FactoryGenerator.cs
- TextElement.cs
- StandardCommands.cs
- PopupRoot.cs
- TraceShell.cs
- ByteStreamMessageEncoderFactory.cs
- InputProcessorProfilesLoader.cs
- HttpRuntimeSection.cs
- UriTemplateVariableQueryValue.cs
- ScrollChangedEventArgs.cs
- VirtualizedContainerService.cs
- MaterialGroup.cs
- IisTraceWebEventProvider.cs
- BitmapEffect.cs
- TemplateColumn.cs
- PenContext.cs
- BitmapCodecInfo.cs
- ServiceManager.cs
- SqlRecordBuffer.cs
- ReachPageContentSerializerAsync.cs
- HwndHost.cs
- RelationshipConverter.cs
- ColorDialog.cs
- DataGridViewDataConnection.cs
- NetWebProxyFinder.cs
- StreamUpgradeProvider.cs
- DataServiceHostFactory.cs
- HwndKeyboardInputProvider.cs
- ReaderContextStackData.cs
- Metafile.cs
- WebPartManagerDesigner.cs
- PropertyInformationCollection.cs
- ExtractedStateEntry.cs
- FormsAuthenticationUser.cs
- ChangeConflicts.cs
- CheckBox.cs
- LicenseContext.cs
- DocumentSequence.cs
- TdsParserSafeHandles.cs
- AsymmetricSignatureDeformatter.cs
- SettingsBindableAttribute.cs
- CompilationUnit.cs
- RequestCacheManager.cs
- PropertyGroupDescription.cs
- WorkflowRequestContext.cs
- SafeFindHandle.cs
- MostlySingletonList.cs
- ImpersonateTokenRef.cs
- DialogResultConverter.cs
- SharedPerformanceCounter.cs
- XmlUtil.cs
- HtmlHistory.cs
- SurrogateSelector.cs
- TableAutomationPeer.cs
- TraceUtility.cs
- Util.cs
- UnsafeNativeMethods.cs
- EventMappingSettings.cs
- SetIndexBinder.cs
- StylusPoint.cs
- EndPoint.cs
- CroppedBitmap.cs
- WebService.cs
- KeyValuePairs.cs
- MemberHolder.cs
- OracleNumber.cs
- WebBrowserHelper.cs
- MouseBinding.cs
- MethodBody.cs
- OverrideMode.cs
- SchemaRegistration.cs
- ShutDownListener.cs
- EntityContainerAssociationSet.cs
- SelectorItemAutomationPeer.cs
- CustomPopupPlacement.cs
- StateElementCollection.cs
- PassportAuthentication.cs
- AsymmetricCryptoHandle.cs
- ToolConsole.cs
- ProfessionalColorTable.cs
- ByteStack.cs
- ExceptionNotification.cs
- StringSource.cs
- ElementMarkupObject.cs
- KeyedHashAlgorithm.cs
- DataGridrowEditEndingEventArgs.cs
- ColumnMap.cs
- ISessionStateStore.cs
- XhtmlBasicFormAdapter.cs
- UriTemplateLiteralQueryValue.cs
- UnauthorizedAccessException.cs
- mansign.cs
- ApplicationActivator.cs