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
- ApplicationId.cs
- MemberAccessException.cs
- NativeMethodsOther.cs
- ListBindingConverter.cs
- ResourceKey.cs
- KeyToListMap.cs
- PriorityBinding.cs
- ProfileServiceManager.cs
- GraphicsState.cs
- UrlMappingsSection.cs
- ObjectStateEntryDbDataRecord.cs
- ToolStripTextBox.cs
- RelationshipDetailsCollection.cs
- TaiwanLunisolarCalendar.cs
- _AutoWebProxyScriptWrapper.cs
- XPathParser.cs
- EllipseGeometry.cs
- VideoDrawing.cs
- TypefaceMetricsCache.cs
- MetadataImporterQuotas.cs
- SlotInfo.cs
- CloudCollection.cs
- UdpConstants.cs
- Encoder.cs
- _IPv4Address.cs
- OdbcDataAdapter.cs
- GlobalizationSection.cs
- HtmlInputHidden.cs
- TransactedBatchingElement.cs
- Converter.cs
- ProfileSection.cs
- UnionCqlBlock.cs
- XPathAxisIterator.cs
- InkCanvasSelectionAdorner.cs
- SamlSerializer.cs
- WindowsEditBoxRange.cs
- Font.cs
- AuthenticationService.cs
- SpStreamWrapper.cs
- BeginCreateSecurityTokenRequest.cs
- AssemblyCollection.cs
- HandlerFactoryWrapper.cs
- WpfXamlLoader.cs
- MatrixCamera.cs
- NamespaceList.cs
- UpdatePanelTrigger.cs
- X509Certificate.cs
- MessageDroppedTraceRecord.cs
- StretchValidation.cs
- TraceFilter.cs
- TextRangeEdit.cs
- HitTestWithGeometryDrawingContextWalker.cs
- RSAPKCS1SignatureFormatter.cs
- FilteredAttributeCollection.cs
- ChangePasswordAutoFormat.cs
- ResourceContainer.cs
- BitmapMetadata.cs
- Query.cs
- SafeJobHandle.cs
- ByteFacetDescriptionElement.cs
- TransactionScopeDesigner.cs
- ButtonChrome.cs
- CheckBoxPopupAdapter.cs
- MobileCategoryAttribute.cs
- ControlIdConverter.cs
- _BufferOffsetSize.cs
- AttributeCollection.cs
- StreamWithDictionary.cs
- WebPartMenuStyle.cs
- RegexMatch.cs
- IdentityHolder.cs
- HtmlEmptyTagControlBuilder.cs
- UriExt.cs
- FreezableDefaultValueFactory.cs
- XmlDigitalSignatureProcessor.cs
- ServiceEndpointElement.cs
- DeviceContext2.cs
- Root.cs
- WebPartDescription.cs
- LicFileLicenseProvider.cs
- ServiceProviders.cs
- TemplateField.cs
- ToolStripScrollButton.cs
- ApplicationDirectory.cs
- SmtpCommands.cs
- TeredoHelper.cs
- MailWriter.cs
- StrokeNodeEnumerator.cs
- KeysConverter.cs
- LocalizedNameDescriptionPair.cs
- CopyCodeAction.cs
- ListBindableAttribute.cs
- XmlSchemaProviderAttribute.cs
- MouseOverProperty.cs
- Constraint.cs
- GeneralTransform3D.cs
- FixedSOMTableCell.cs
- SqlMethodAttribute.cs
- CrossSiteScriptingValidation.cs
- DataGridViewDataConnection.cs