Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- MenuItem.cs
- BooleanConverter.cs
- SynchronizationContext.cs
- WebRequest.cs
- RowCache.cs
- ValidationEventArgs.cs
- FixedSOMLineCollection.cs
- InfoCardCryptoHelper.cs
- TimeoutException.cs
- OracleInfoMessageEventArgs.cs
- ItemMap.cs
- TypedReference.cs
- ExpressionsCollectionConverter.cs
- Knowncolors.cs
- StateBag.cs
- ObjectViewFactory.cs
- DmlSqlGenerator.cs
- HGlobalSafeHandle.cs
- DodSequenceMerge.cs
- EventSourceCreationData.cs
- WebPartZoneBase.cs
- WebPartCloseVerb.cs
- X500Name.cs
- ISAPIRuntime.cs
- TextRangeEditLists.cs
- UnsafeNativeMethods.cs
- XmlILModule.cs
- WebPartsPersonalizationAuthorization.cs
- ResourceReferenceExpressionConverter.cs
- FixedSchema.cs
- ListViewInsertedEventArgs.cs
- KeyedHashAlgorithm.cs
- CannotUnloadAppDomainException.cs
- Matrix3D.cs
- SqlNotificationEventArgs.cs
- MarkupCompiler.cs
- XmlSerializer.cs
- assertwrapper.cs
- ProtectedProviderSettings.cs
- CancelEventArgs.cs
- RowCache.cs
- NamespaceDisplay.xaml.cs
- CharConverter.cs
- CriticalHandle.cs
- ACE.cs
- XmlDataDocument.cs
- TemplateControlBuildProvider.cs
- BlobPersonalizationState.cs
- LayoutDump.cs
- DnsPermission.cs
- XPathExpr.cs
- ToolBarButtonClickEvent.cs
- ZoneMembershipCondition.cs
- CodeArrayCreateExpression.cs
- EventMappingSettingsCollection.cs
- TableLayoutStyleCollection.cs
- XsltInput.cs
- Clock.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- hebrewshape.cs
- VectorCollectionConverter.cs
- SymbolTable.cs
- SupportsEventValidationAttribute.cs
- PathFigure.cs
- TableItemPattern.cs
- InkPresenter.cs
- DataGridViewRowCancelEventArgs.cs
- WorkflowOwnershipException.cs
- ResourceKey.cs
- RelationshipDetailsRow.cs
- XamlToRtfWriter.cs
- Attribute.cs
- GridViewRowPresenter.cs
- CreateWorkflowOwnerCommand.cs
- SkinIDTypeConverter.cs
- DataSet.cs
- DataGridViewHeaderCell.cs
- SecurityProtocolCorrelationState.cs
- FontNamesConverter.cs
- Converter.cs
- ObjectViewFactory.cs
- WithParamAction.cs
- ElementAction.cs
- x509utils.cs
- PngBitmapEncoder.cs
- TypeCodeDomSerializer.cs
- SizeConverter.cs
- TimelineGroup.cs
- MessageAction.cs
- CachedBitmap.cs
- NavigationHelper.cs
- DesignParameter.cs
- AttributeData.cs
- RangeBaseAutomationPeer.cs
- ImpersonationContext.cs
- ExceptionRoutedEventArgs.cs
- PrinterUnitConvert.cs
- JsonStringDataContract.cs
- Bold.cs
- PageWrapper.cs