Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / ConstraintEnumerator.cs / 1 / ConstraintEnumerator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Diagnostics; using System.Collections; using System.ComponentModel; ////// ConstraintEnumerator is an object for enumerating all constraints in a DataSet /// internal class ConstraintEnumerator { System.Collections.IEnumerator tables; System.Collections.IEnumerator constraints; Constraint currentObject; public ConstraintEnumerator(DataSet dataSet) { tables = (dataSet != null) ? dataSet.Tables.GetEnumerator() : null; currentObject = null; } public bool GetNext() { Constraint candidate; currentObject = null; while (tables != null) { if (constraints == null) { if (!tables.MoveNext()) { tables = null; return false; } constraints = ((DataTable)tables.Current).Constraints.GetEnumerator(); } if (!constraints.MoveNext()) { constraints = null; continue; } Debug.Assert(constraints.Current is Constraint, "ConstraintEnumerator, contains object which is not constraint"); candidate = (Constraint)constraints.Current; if (IsValidCandidate(candidate)) { currentObject = candidate; return true; } } return false; } public Constraint GetConstraint() { // If currentObject is null we are before first GetNext or after last GetNext--consumer is bad Debug.Assert (currentObject != null, "GetObject should never be called w/ null currentObject."); return currentObject; } protected virtual bool IsValidCandidate(Constraint constraint) { return true; } protected Constraint CurrentObject { get { return currentObject; } } } internal class ForeignKeyConstraintEnumerator : ConstraintEnumerator { public ForeignKeyConstraintEnumerator(DataSet dataSet) : base(dataSet) { } protected override bool IsValidCandidate(Constraint constraint) { return(constraint is ForeignKeyConstraint); } public ForeignKeyConstraint GetForeignKeyConstraint() { // If CurrentObject is null we are before first GetNext or after last GetNext--consumer is bad Debug.Assert (CurrentObject != null, "GetObject should never be called w/ null currentObject."); return(ForeignKeyConstraint)CurrentObject; } } internal sealed class ChildForeignKeyConstraintEnumerator : ForeignKeyConstraintEnumerator { // this is the table to do comparisons against DataTable table; public ChildForeignKeyConstraintEnumerator(DataSet dataSet, DataTable inTable) : base(dataSet) { this.table = inTable; } protected override bool IsValidCandidate(Constraint constraint) { return((constraint is ForeignKeyConstraint) && (((ForeignKeyConstraint)constraint).Table == table)); } } internal sealed class ParentForeignKeyConstraintEnumerator : ForeignKeyConstraintEnumerator { // this is the table to do comparisons against DataTable table; public ParentForeignKeyConstraintEnumerator(DataSet dataSet, DataTable inTable) : base(dataSet) { this.table = inTable; } protected override bool IsValidCandidate(Constraint constraint) { return((constraint is ForeignKeyConstraint) && (((ForeignKeyConstraint)constraint).RelatedTable == table)); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComponentFactoryHelpers.cs
- TransactionManager.cs
- MissingMethodException.cs
- JournalNavigationScope.cs
- EditorOptionAttribute.cs
- EdmType.cs
- WindowsSlider.cs
- PathFigureCollection.cs
- UnsafeNativeMethods.cs
- Directory.cs
- WebPartTransformer.cs
- InheritanceAttribute.cs
- MetaChildrenColumn.cs
- CookielessHelper.cs
- oledbmetadatacollectionnames.cs
- AppDomainFactory.cs
- TdsParserStaticMethods.cs
- ResourceExpressionBuilder.cs
- FilterElement.cs
- OdbcCommand.cs
- WebPartExportVerb.cs
- LocalTransaction.cs
- ThreadStartException.cs
- SetStateDesigner.cs
- LinearKeyFrames.cs
- Pkcs7Recipient.cs
- SecurityUniqueId.cs
- XmlSchemaObjectTable.cs
- DataGridViewHeaderCell.cs
- XmlQueryCardinality.cs
- DataGridViewDataErrorEventArgs.cs
- DataGridViewRowsRemovedEventArgs.cs
- AvTraceFormat.cs
- DependencyObjectPropertyDescriptor.cs
- validationstate.cs
- QueryStringParameter.cs
- RuntimeIdentifierPropertyAttribute.cs
- ActivatableWorkflowsQueryResult.cs
- DependencyPropertyDescriptor.cs
- CookielessHelper.cs
- SplitterPanel.cs
- RoleManagerEventArgs.cs
- BinaryParser.cs
- X509Utils.cs
- Win32.cs
- StylusPointCollection.cs
- DefaultValueTypeConverter.cs
- NavigationProperty.cs
- HttpWebRequest.cs
- Win32.cs
- SqlServer2KCompatibilityAnnotation.cs
- TypeUtils.cs
- IndexedWhereQueryOperator.cs
- PaintEvent.cs
- SelectionRangeConverter.cs
- MembershipPasswordException.cs
- TextEditorContextMenu.cs
- PeerCollaboration.cs
- ThicknessAnimation.cs
- BackStopAuthenticationModule.cs
- SchemaElement.cs
- _UriTypeConverter.cs
- ByteBufferPool.cs
- NotifyInputEventArgs.cs
- SchemaType.cs
- SymmetricSecurityProtocolFactory.cs
- SplitContainerDesigner.cs
- RadioButtonPopupAdapter.cs
- NTAccount.cs
- SplineKeyFrames.cs
- CodeTypeMember.cs
- PublisherMembershipCondition.cs
- WebEvents.cs
- ProxyWebPartManager.cs
- NodeLabelEditEvent.cs
- ToolBarPanel.cs
- Vector3DAnimation.cs
- XmlSchemaAnnotated.cs
- ResourcesChangeInfo.cs
- OutgoingWebResponseContext.cs
- QilCloneVisitor.cs
- ContentValidator.cs
- WebPartRestoreVerb.cs
- StateBag.cs
- Faults.cs
- DeviceContext.cs
- PageTheme.cs
- Transaction.cs
- Material.cs
- ZipIORawDataFileBlock.cs
- XmlMapping.cs
- TemplateContentLoader.cs
- sqlmetadatafactory.cs
- XmlWellformedWriter.cs
- SiteMapSection.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- SQLMoneyStorage.cs
- WebPartMovingEventArgs.cs
- StringBlob.cs
- FormViewUpdateEventArgs.cs