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
- XmlAutoDetectWriter.cs
- TextAutomationPeer.cs
- MetaDataInfo.cs
- TreeNodeBindingCollection.cs
- PersonalizableTypeEntry.cs
- ProcessStartInfo.cs
- SQLInt64.cs
- ApplicationServiceManager.cs
- DbUpdateCommandTree.cs
- Helper.cs
- TextPointer.cs
- FontTypeConverter.cs
- InkPresenterAutomationPeer.cs
- JsonUriDataContract.cs
- BindableAttribute.cs
- WebColorConverter.cs
- CopyNodeSetAction.cs
- CompilationRelaxations.cs
- ImageMetadata.cs
- FilteredAttributeCollection.cs
- JsonClassDataContract.cs
- VectorCollectionValueSerializer.cs
- StylusButtonEventArgs.cs
- shaperfactory.cs
- HwndSourceParameters.cs
- TextTreeTextElementNode.cs
- SynchronizedCollection.cs
- SmtpReplyReaderFactory.cs
- StdValidatorsAndConverters.cs
- DoubleLinkListEnumerator.cs
- HttpChannelBindingToken.cs
- ThousandthOfEmRealPoints.cs
- ClientRuntimeConfig.cs
- XmlFormatReaderGenerator.cs
- ConsoleTraceListener.cs
- PeerTransportCredentialType.cs
- XmlQualifiedNameTest.cs
- TransformerTypeCollection.cs
- ProtectedConfigurationSection.cs
- PropertySegmentSerializer.cs
- ContextStack.cs
- SimpleExpression.cs
- DynamicRouteExpression.cs
- AtomicFile.cs
- SecurityDocument.cs
- Message.cs
- HtmlImage.cs
- StoreItemCollection.Loader.cs
- ExpressionServices.cs
- SqlConnectionPoolProviderInfo.cs
- StringDictionaryEditor.cs
- ArrayConverter.cs
- util.cs
- FixUp.cs
- SizeKeyFrameCollection.cs
- CommandBindingCollection.cs
- MappedMetaModel.cs
- ToolStripItemClickedEventArgs.cs
- DataGridViewDataConnection.cs
- StylusOverProperty.cs
- UInt64.cs
- CatalogPartCollection.cs
- DataGridSortCommandEventArgs.cs
- HttpWebResponse.cs
- ModelToObjectValueConverter.cs
- WebPartConnectionCollection.cs
- IntegrationExceptionEventArgs.cs
- AssemblyResourceLoader.cs
- DataKeyCollection.cs
- FixedSOMLineRanges.cs
- IdnElement.cs
- ZoneMembershipCondition.cs
- SpeakCompletedEventArgs.cs
- Pkcs9Attribute.cs
- URIFormatException.cs
- AttributeProviderAttribute.cs
- LinqDataSourceStatusEventArgs.cs
- PopOutPanel.cs
- Queue.cs
- SynchronizedInputHelper.cs
- ByteRangeDownloader.cs
- LogSwitch.cs
- DrawingDrawingContext.cs
- CrossContextChannel.cs
- RowCache.cs
- NameValueConfigurationCollection.cs
- HtmlInputHidden.cs
- FormattedText.cs
- TableCellCollection.cs
- WebDisplayNameAttribute.cs
- IISUnsafeMethods.cs
- RemoteDebugger.cs
- TraceSection.cs
- SqlFunctionAttribute.cs
- AccessDataSourceView.cs
- MultiAsyncResult.cs
- TraceLevelStore.cs
- SystemIPInterfaceStatistics.cs
- SqlDataSourceSelectingEventArgs.cs
- GridSplitterAutomationPeer.cs