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
- SQLInt64.cs
- DataSourceCache.cs
- ACE.cs
- BitSet.cs
- ValidationSummary.cs
- RenderDataDrawingContext.cs
- Trace.cs
- MenuItemCollection.cs
- HttpWriter.cs
- Internal.cs
- InstanceHandleReference.cs
- XmlAnyAttributeAttribute.cs
- BindingExpression.cs
- TableRowGroup.cs
- XmlWellformedWriter.cs
- ThreadAttributes.cs
- ScriptingRoleServiceSection.cs
- FrameworkContentElement.cs
- BindingSource.cs
- Site.cs
- DataQuery.cs
- CheckoutException.cs
- securitycriticaldataClass.cs
- FileVersion.cs
- ConnectionManagementSection.cs
- MULTI_QI.cs
- EqualityComparer.cs
- XmlDeclaration.cs
- BufferModesCollection.cs
- ArglessEventHandlerProxy.cs
- PlainXmlDeserializer.cs
- SequenceFullException.cs
- WebRequestModulesSection.cs
- WebServiceTypeData.cs
- WsdlExporter.cs
- Dump.cs
- AxHost.cs
- CryptoConfig.cs
- SocketException.cs
- AttributeQuery.cs
- DeleteHelper.cs
- DbConnectionClosed.cs
- RegionIterator.cs
- GroupedContextMenuStrip.cs
- objectquery_tresulttype.cs
- WindowsSpinner.cs
- SymbolResolver.cs
- DataServiceConfiguration.cs
- MediaEntryAttribute.cs
- LogEntry.cs
- XmlQueryOutput.cs
- StylusTip.cs
- XmlSchema.cs
- URLMembershipCondition.cs
- WindowsSpinner.cs
- RSAOAEPKeyExchangeFormatter.cs
- ApplicationProxyInternal.cs
- RuntimeConfigLKG.cs
- UpdateCommand.cs
- XmlUTF8TextWriter.cs
- WebBrowser.cs
- UrlMappingCollection.cs
- DESCryptoServiceProvider.cs
- SchemaImporter.cs
- DescriptionAttribute.cs
- QueryStringParameter.cs
- GridErrorDlg.cs
- DesignerView.cs
- DecimalAnimationBase.cs
- StylusShape.cs
- EmptyControlCollection.cs
- ProgressChangedEventArgs.cs
- BypassElement.cs
- PassportAuthentication.cs
- FormsIdentity.cs
- MetadataPropertyAttribute.cs
- SqlCacheDependencyDatabase.cs
- X509ChainPolicy.cs
- XmlILOptimizerVisitor.cs
- DataSetViewSchema.cs
- Menu.cs
- XmlChoiceIdentifierAttribute.cs
- WindowInteropHelper.cs
- ConfigDefinitionUpdates.cs
- PngBitmapEncoder.cs
- LiteralLink.cs
- EncoderBestFitFallback.cs
- SafeMILHandle.cs
- NotFiniteNumberException.cs
- SiteMapPath.cs
- SqlCacheDependencyDatabaseCollection.cs
- OperatingSystem.cs
- Drawing.cs
- StreamInfo.cs
- AvTraceFormat.cs
- UserControlDocumentDesigner.cs
- ReliableChannelBinder.cs
- PropertyEmitterBase.cs
- Wizard.cs
- ServiceOperationParameter.cs