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
- SmiRequestExecutor.cs
- SchemaSetCompiler.cs
- Int32Converter.cs
- BinaryReader.cs
- ETagAttribute.cs
- InkCanvasFeedbackAdorner.cs
- SqlMetaData.cs
- Scene3D.cs
- ClientEventManager.cs
- controlskin.cs
- TypedColumnHandler.cs
- DirtyTextRange.cs
- WinEventQueueItem.cs
- EntityDataSourceChangedEventArgs.cs
- MetadataItem.cs
- _BufferOffsetSize.cs
- util.cs
- GridViewUpdatedEventArgs.cs
- JournalNavigationScope.cs
- WebPartsPersonalization.cs
- ScriptIgnoreAttribute.cs
- SwitchDesigner.xaml.cs
- ArgumentValidation.cs
- XmlNodeComparer.cs
- ColumnResizeAdorner.cs
- WebBrowserEvent.cs
- XmlSchemaDatatype.cs
- StringValueConverter.cs
- BaseCAMarshaler.cs
- ProcessManager.cs
- GenerateScriptTypeAttribute.cs
- OleDbParameter.cs
- ServiceModelReg.cs
- ListViewDataItem.cs
- RightsManagementEncryptionTransform.cs
- iisPickupDirectory.cs
- StringInfo.cs
- EmbeddedObject.cs
- EntityContainerRelationshipSet.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- DataGridColumn.cs
- TemplateXamlTreeBuilder.cs
- Itemizer.cs
- ConfigXmlComment.cs
- DesignTimeParseData.cs
- StandardToolWindows.cs
- TextChange.cs
- PolicyValidator.cs
- DirtyTextRange.cs
- ParseHttpDate.cs
- BindableAttribute.cs
- TakeOrSkipWhileQueryOperator.cs
- SvcMapFileLoader.cs
- WrapPanel.cs
- ScrollData.cs
- CustomWebEventKey.cs
- SimpleType.cs
- InterleavedZipPartStream.cs
- EntityDataSourceState.cs
- StreamInfo.cs
- MissingMethodException.cs
- DodSequenceMerge.cs
- ObjectListSelectEventArgs.cs
- WizardForm.cs
- ManagedIStream.cs
- WebPartCollection.cs
- PageHandlerFactory.cs
- ActionItem.cs
- DataKeyCollection.cs
- DataViewManager.cs
- messageonlyhwndwrapper.cs
- querybuilder.cs
- RequiredFieldValidator.cs
- SerialReceived.cs
- Control.cs
- InvokePattern.cs
- EventToken.cs
- XmlNavigatorStack.cs
- Table.cs
- DiagnosticEventProvider.cs
- PageThemeBuildProvider.cs
- InputLangChangeEvent.cs
- ClientBuildManager.cs
- ToolStripOverflow.cs
- MustUnderstandSoapException.cs
- SafeArrayRankMismatchException.cs
- TriState.cs
- xmlglyphRunInfo.cs
- ErrorTableItemStyle.cs
- UnsafeNativeMethods.cs
- TableItemStyle.cs
- ConnectionStringSettingsCollection.cs
- ColorIndependentAnimationStorage.cs
- DesignerAdapterAttribute.cs
- UshortList2.cs
- ConvertersCollection.cs
- SessionStateItemCollection.cs
- HttpProcessUtility.cs
- SqlBulkCopyColumnMapping.cs
- GeometryGroup.cs