Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / ConstraintEnumerator.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BasicCommandTreeVisitor.cs
- SmtpCommands.cs
- PolyBezierSegment.cs
- CombinedGeometry.cs
- CanonicalFontFamilyReference.cs
- UnsafeNativeMethodsCLR.cs
- Mapping.cs
- fixedPageContentExtractor.cs
- PopOutPanel.cs
- ContentDesigner.cs
- InstanceHandleReference.cs
- MatrixCamera.cs
- FileCodeGroup.cs
- SystemWebCachingSectionGroup.cs
- SmiXetterAccessMap.cs
- ClientBuildManagerCallback.cs
- AsymmetricSignatureFormatter.cs
- BaseCodeDomTreeGenerator.cs
- DataControlImageButton.cs
- CodeSnippetStatement.cs
- WorkflowTransactionOptions.cs
- AnnotationComponentManager.cs
- GridItemPattern.cs
- ContextMenuStripGroupCollection.cs
- JsonCollectionDataContract.cs
- XmlILStorageConverter.cs
- MetadataItemCollectionFactory.cs
- Stylesheet.cs
- PagerSettings.cs
- GradientBrush.cs
- SynchronousChannelMergeEnumerator.cs
- _SslState.cs
- SemaphoreFullException.cs
- MatrixCamera.cs
- RectangleConverter.cs
- SQLInt32Storage.cs
- ChtmlPageAdapter.cs
- InsufficientMemoryException.cs
- ExceptionCollection.cs
- SortedSet.cs
- FileStream.cs
- ISO2022Encoding.cs
- counter.cs
- SHA256.cs
- ByteBufferPool.cs
- Environment.cs
- PauseStoryboard.cs
- Utils.cs
- CodeNamespaceCollection.cs
- LogLogRecordHeader.cs
- CodeTypeDelegate.cs
- MimeBasePart.cs
- ViewStateException.cs
- Profiler.cs
- StatusBar.cs
- TextEffect.cs
- XmlTextReader.cs
- SerialErrors.cs
- CharacterMetrics.cs
- GcSettings.cs
- ReachDocumentSequenceSerializer.cs
- DesignerActionMethodItem.cs
- AccessViolationException.cs
- XamlClipboardData.cs
- CryptoProvider.cs
- CorrelationManager.cs
- WindowsListViewGroupHelper.cs
- XmlAttribute.cs
- DataGridColumnCollection.cs
- WebPartMenu.cs
- InstancePersistenceCommandException.cs
- FailedToStartupUIException.cs
- ExpressionsCollectionConverter.cs
- RotationValidation.cs
- XmlSchemaObjectTable.cs
- PathSegment.cs
- TextRunProperties.cs
- Parser.cs
- TextDecorationCollection.cs
- CompilerCollection.cs
- HMACSHA256.cs
- ProgressBar.cs
- Transform3DCollection.cs
- ArraySegment.cs
- DeadCharTextComposition.cs
- FormsIdentity.cs
- Int32Rect.cs
- TakeOrSkipQueryOperator.cs
- CriticalFinalizerObject.cs
- TextServicesProperty.cs
- BulletedList.cs
- PackWebRequest.cs
- CssTextWriter.cs
- CriticalHandle.cs
- DictionaryEntry.cs
- ThreadStartException.cs
- MultiPageTextView.cs
- TextModifier.cs
- WebPartAuthorizationEventArgs.cs
- Timeline.cs