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
- Win32.cs
- CompatibleComparer.cs
- QilLiteral.cs
- MetadataPropertyvalue.cs
- GridViewRowPresenterBase.cs
- DefaultSerializationProviderAttribute.cs
- MsmqIntegrationSecurity.cs
- ObjectFullSpanRewriter.cs
- EnumerableRowCollectionExtensions.cs
- Events.cs
- ComboBox.cs
- SqlServer2KCompatibilityAnnotation.cs
- SecurityCapabilities.cs
- XmlEventCache.cs
- EntityContainerAssociationSet.cs
- ConfigurationLockCollection.cs
- ISCIIEncoding.cs
- PerfCounters.cs
- Vector3DValueSerializer.cs
- XmlDownloadManager.cs
- AnimationTimeline.cs
- AstTree.cs
- QuotedStringFormatReader.cs
- AutoFocusStyle.xaml.cs
- XsltQilFactory.cs
- DataViewListener.cs
- SqlUserDefinedAggregateAttribute.cs
- RowType.cs
- FormsAuthenticationUserCollection.cs
- ObjectSecurity.cs
- WebEventCodes.cs
- StorageAssociationTypeMapping.cs
- DependencyPropertyKey.cs
- DocumentsTrace.cs
- OleAutBinder.cs
- ComboBoxRenderer.cs
- DocumentXPathNavigator.cs
- InputScopeManager.cs
- XmlSchemaAttributeGroup.cs
- DataGridViewColumnEventArgs.cs
- KeyGestureValueSerializer.cs
- BindingCollection.cs
- InkCanvas.cs
- IndentedWriter.cs
- DisableDpiAwarenessAttribute.cs
- ProtocolElementCollection.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ResponseBodyWriter.cs
- ClientUrlResolverWrapper.cs
- InputManager.cs
- AnnotationResourceCollection.cs
- RawTextInputReport.cs
- InputGestureCollection.cs
- DelegatedStream.cs
- XPathParser.cs
- CfgRule.cs
- AspProxy.cs
- IndexOutOfRangeException.cs
- PageBuildProvider.cs
- SqlGatherConsumedAliases.cs
- CodeSubDirectoriesCollection.cs
- GridPattern.cs
- XmlWrappingReader.cs
- CodeNamespace.cs
- RangeValidator.cs
- CodeDomSerializerBase.cs
- RepeaterItem.cs
- PassportPrincipal.cs
- HtmlValidationSummaryAdapter.cs
- SystemIPGlobalStatistics.cs
- EntityModelSchemaGenerator.cs
- TagNameToTypeMapper.cs
- MonthChangedEventArgs.cs
- Invariant.cs
- TemplateControlBuildProvider.cs
- Material.cs
- PrivilegeNotHeldException.cs
- CleanUpVirtualizedItemEventArgs.cs
- WebResourceAttribute.cs
- AccessDataSource.cs
- FullTextLine.cs
- HuffModule.cs
- PropertyInfoSet.cs
- DbgUtil.cs
- WorkflowInstanceContextProvider.cs
- DispatcherObject.cs
- InstanceStoreQueryResult.cs
- HwndAppCommandInputProvider.cs
- HtmlTableCellCollection.cs
- SHA512.cs
- PackUriHelper.cs
- GenericUriParser.cs
- BezierSegment.cs
- WebPartVerbsEventArgs.cs
- NamespaceInfo.cs
- ObsoleteAttribute.cs
- XamlTreeBuilderBamlRecordWriter.cs
- BinaryObjectWriter.cs
- ImpersonationContext.cs
- CmsInterop.cs