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
- AsyncStreamReader.cs
- TextTreeTextNode.cs
- ReadOnlyMetadataCollection.cs
- AxisAngleRotation3D.cs
- SynchronizedInputHelper.cs
- TextPointer.cs
- HttpListenerRequest.cs
- ReflectionServiceProvider.cs
- StringFunctions.cs
- DatatypeImplementation.cs
- Scanner.cs
- TemplatePropertyEntry.cs
- AdornerLayer.cs
- ImportContext.cs
- ThousandthOfEmRealPoints.cs
- SimpleBitVector32.cs
- NavigateEvent.cs
- XmlSecureResolver.cs
- DataTable.cs
- VersionValidator.cs
- EncoderReplacementFallback.cs
- AnimationException.cs
- GifBitmapEncoder.cs
- FlowDocumentPageViewerAutomationPeer.cs
- MD5.cs
- XPathNavigator.cs
- ZipPackagePart.cs
- EdmSchemaError.cs
- SchemaTableColumn.cs
- SoapFormatExtensions.cs
- HtmlForm.cs
- WebPartUserCapability.cs
- CheckBoxFlatAdapter.cs
- securitymgrsite.cs
- GridViewColumnCollection.cs
- DetailsViewCommandEventArgs.cs
- counter.cs
- HeaderedContentControl.cs
- TimeSpanMinutesConverter.cs
- SQLRoleProvider.cs
- TextShapeableCharacters.cs
- XPathNodeHelper.cs
- PhysicalOps.cs
- SimpleParser.cs
- Function.cs
- ListCollectionView.cs
- ActivityExecutorOperation.cs
- Decorator.cs
- NetSectionGroup.cs
- WsdlBuildProvider.cs
- PassportIdentity.cs
- ButtonChrome.cs
- ArrayListCollectionBase.cs
- HttpClientCertificate.cs
- ParameterModifier.cs
- LinqToSqlWrapper.cs
- TransportChannelFactory.cs
- GetParentChain.cs
- DataColumnChangeEvent.cs
- VirtualPathProvider.cs
- SourceItem.cs
- ThreadAttributes.cs
- Component.cs
- SendKeys.cs
- EntityDataSource.cs
- ReferencedAssemblyResolver.cs
- SizeAnimationClockResource.cs
- RuleSettings.cs
- DiscoveryMessageSequenceCD1.cs
- DrawingContextWalker.cs
- dbenumerator.cs
- InternalsVisibleToAttribute.cs
- OperationFormatUse.cs
- ObjectConverter.cs
- ProcessHostConfigUtils.cs
- LayoutTable.cs
- FixedPageStructure.cs
- DisplayInformation.cs
- SetStateEventArgs.cs
- ColorContext.cs
- coordinatorscratchpad.cs
- FullTextState.cs
- ExceptionHelpers.cs
- DataGridViewCellFormattingEventArgs.cs
- DigitShape.cs
- MutexSecurity.cs
- PageEventArgs.cs
- CategoryGridEntry.cs
- ASCIIEncoding.cs
- Cell.cs
- XmlSchemaFacet.cs
- FlowDocumentFormatter.cs
- Error.cs
- EventLogEntry.cs
- DataGridPagerStyle.cs
- Int32Converter.cs
- UseAttributeSetsAction.cs
- StringInfo.cs
- AlphaSortedEnumConverter.cs
- DurableInstanceProvider.cs