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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DriveNotFoundException.cs
- DeflateStream.cs
- StringResourceManager.cs
- SingleAnimation.cs
- ThrowHelper.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- basevalidator.cs
- LabelExpression.cs
- XsltOutput.cs
- StructureChangedEventArgs.cs
- EntitySqlQueryCacheKey.cs
- RootBrowserWindowProxy.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- InstancePersistenceCommand.cs
- FixedSOMFixedBlock.cs
- PolicyStatement.cs
- Condition.cs
- ActivityExecutorOperation.cs
- CodeNamespace.cs
- AstTree.cs
- InputLanguageManager.cs
- Utility.cs
- Tokenizer.cs
- HttpSessionStateWrapper.cs
- ClientScriptManager.cs
- InternalDispatchObject.cs
- TextTreeRootTextBlock.cs
- StylusPoint.cs
- SqlFlattener.cs
- DataSourceControl.cs
- DataTableReaderListener.cs
- SystemIPAddressInformation.cs
- Pens.cs
- DbProviderFactories.cs
- ControlFilterExpression.cs
- SecureConversationServiceCredential.cs
- ProfileSettingsCollection.cs
- CodeCommentStatementCollection.cs
- GiveFeedbackEventArgs.cs
- CheckBox.cs
- ReaderWriterLock.cs
- AsmxEndpointPickerExtension.cs
- ListView.cs
- HandlerBase.cs
- HelpPage.cs
- ResourceWriter.cs
- XmlException.cs
- ColorAnimationBase.cs
- _ServiceNameStore.cs
- ConcurrentDictionary.cs
- WebPartConnectionsConfigureVerb.cs
- PointIndependentAnimationStorage.cs
- SapiRecoContext.cs
- DeclaredTypeElementCollection.cs
- DynamicRouteExpression.cs
- StyleHelper.cs
- RuleSettingsCollection.cs
- ComponentManagerBroker.cs
- SqlTriggerAttribute.cs
- SqlCacheDependency.cs
- RewritingValidator.cs
- XmlSchemaElement.cs
- RealizedColumnsBlock.cs
- Button.cs
- CodeAccessSecurityEngine.cs
- ConnectionPointCookie.cs
- ClipboardProcessor.cs
- Operator.cs
- AsnEncodedData.cs
- Int32Rect.cs
- UmAlQuraCalendar.cs
- Qualifier.cs
- ISAPIApplicationHost.cs
- AnonymousIdentificationModule.cs
- SqlBulkCopy.cs
- GenericEnumConverter.cs
- ObjectStateEntryDbDataRecord.cs
- SqlUdtInfo.cs
- SymmetricAlgorithm.cs
- OpacityConverter.cs
- XPathItem.cs
- WorkflowOperationFault.cs
- DataRecordInfo.cs
- AutoResizedEvent.cs
- TemplateBuilder.cs
- DateTimeFormat.cs
- FunctionDefinition.cs
- GradientStop.cs
- BufferedStream2.cs
- Message.cs
- VisualStateChangedEventArgs.cs
- FieldCollectionEditor.cs
- AttributeSetAction.cs
- PolicyValidationException.cs
- RequestCacheEntry.cs
- pingexception.cs
- IntSecurity.cs
- XmlSchemaExternal.cs
- XmlSortKeyAccumulator.cs
- MobileComponentEditorPage.cs