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
- AttachedProperty.cs
- EncodingTable.cs
- IndexedEnumerable.cs
- FixUpCollection.cs
- SeekStoryboard.cs
- AppDomain.cs
- SchemaImporterExtensionsSection.cs
- ReaderOutput.cs
- NamedElement.cs
- TextReader.cs
- CodeIterationStatement.cs
- InputBinding.cs
- InternalResources.cs
- GuidelineCollection.cs
- Facet.cs
- SharedMemory.cs
- Span.cs
- ComponentSerializationService.cs
- DataSetSchema.cs
- EntityProviderServices.cs
- TemplateLookupAction.cs
- Crc32Helper.cs
- DatePickerDateValidationErrorEventArgs.cs
- InputReferenceExpression.cs
- ResourceContainer.cs
- ProtocolsConfigurationEntry.cs
- ArcSegment.cs
- MemberRestriction.cs
- COM2EnumConverter.cs
- Vertex.cs
- PropertyDescriptorComparer.cs
- querybuilder.cs
- TaskFileService.cs
- CSharpCodeProvider.cs
- Thumb.cs
- SqlConnectionFactory.cs
- MetafileHeaderWmf.cs
- DesignerActionItem.cs
- DynamicDiscoveryDocument.cs
- DbParameterCollectionHelper.cs
- DataServiceHostWrapper.cs
- ErrorFormatter.cs
- XpsFixedDocumentReaderWriter.cs
- BamlCollectionHolder.cs
- XmlTextReader.cs
- OleAutBinder.cs
- BuildProvidersCompiler.cs
- HtmlElementCollection.cs
- ErrorFormatterPage.cs
- XmlDownloadManager.cs
- ProtocolState.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- UmAlQuraCalendar.cs
- DataSourceSelectArguments.cs
- Win32NamedPipes.cs
- XComponentModel.cs
- QilStrConcat.cs
- TimelineGroup.cs
- DataGridViewCellValueEventArgs.cs
- SqlConnectionHelper.cs
- ParsedRoute.cs
- ValueProviderWrapper.cs
- RequestChannel.cs
- StructuredTypeEmitter.cs
- Update.cs
- EdmFunctions.cs
- TypeDescriptionProviderAttribute.cs
- DtdParser.cs
- MarkupObject.cs
- NativeMethods.cs
- XmlSchemaAny.cs
- ListDictionaryInternal.cs
- FontFaceLayoutInfo.cs
- DeleteStoreRequest.cs
- SecurityTokenTypes.cs
- GridViewColumnCollection.cs
- DbConnectionPoolOptions.cs
- HierarchicalDataSourceControl.cs
- httpserverutility.cs
- _SslState.cs
- Page.cs
- PrimitiveSchema.cs
- PrePrepareMethodAttribute.cs
- WsdlBuildProvider.cs
- mda.cs
- XmlCustomFormatter.cs
- DocComment.cs
- TransactionFlowBindingElementImporter.cs
- CellRelation.cs
- CriticalFinalizerObject.cs
- ResourceAttributes.cs
- MultiPageTextView.cs
- GatewayDefinition.cs
- WindowsListView.cs
- BinaryExpression.cs
- CustomAttributeBuilder.cs
- ArrayElementGridEntry.cs
- HelloMessage11.cs
- MatrixTransform.cs
- LineServicesCallbacks.cs