Code:
/ FX-1434 / FX-1434 / 1.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
- GlyphRun.cs
- SqlCacheDependencyDatabase.cs
- RewritingValidator.cs
- BitmapSource.cs
- Interlocked.cs
- KerberosSecurityTokenAuthenticator.cs
- SafeFileMapViewHandle.cs
- XPathSelectionIterator.cs
- SecurityPolicySection.cs
- ElapsedEventArgs.cs
- MatrixCamera.cs
- Visual3DCollection.cs
- Menu.cs
- UpDownBaseDesigner.cs
- SqlTypesSchemaImporter.cs
- FieldDescriptor.cs
- GuidelineCollection.cs
- AppDomainShutdownMonitor.cs
- ScrollViewerAutomationPeer.cs
- UnmanagedHandle.cs
- SqlFacetAttribute.cs
- FileLoadException.cs
- SqlUdtInfo.cs
- Vector3DIndependentAnimationStorage.cs
- OperationAbortedException.cs
- StyleCollection.cs
- FieldNameLookup.cs
- VisualProxy.cs
- FileChangeNotifier.cs
- NavigationWindowAutomationPeer.cs
- Propagator.cs
- Transform3D.cs
- TextFormatterImp.cs
- OperationCanceledException.cs
- HtmlLink.cs
- SoapMessage.cs
- MetadataHelper.cs
- RegexRunner.cs
- PnrpPermission.cs
- MenuScrollingVisibilityConverter.cs
- JoinGraph.cs
- DatagramAdapter.cs
- SafeProcessHandle.cs
- ParseNumbers.cs
- CurrentTimeZone.cs
- ProcessThread.cs
- ExceptionHandlerDesigner.cs
- OleDbReferenceCollection.cs
- GeneralTransform2DTo3D.cs
- DataStorage.cs
- TraceSource.cs
- autovalidator.cs
- StringExpressionSet.cs
- XsdCachingReader.cs
- FixedTextBuilder.cs
- IPEndPoint.cs
- IgnorePropertiesAttribute.cs
- ObjectStateFormatter.cs
- Tuple.cs
- TabControl.cs
- DataIdProcessor.cs
- LinkedResource.cs
- BindingExpressionBase.cs
- MergePropertyDescriptor.cs
- RootBrowserWindow.cs
- PermissionAttributes.cs
- FontCollection.cs
- ExpressionTextBoxAutomationPeer.cs
- SQLDecimal.cs
- TrimSurroundingWhitespaceAttribute.cs
- ResponseStream.cs
- ShaderRenderModeValidation.cs
- ToolBar.cs
- DecoderBestFitFallback.cs
- GifBitmapDecoder.cs
- DiagnosticsConfiguration.cs
- ThemeDictionaryExtension.cs
- ChannelManager.cs
- ListViewAutomationPeer.cs
- CollectionBuilder.cs
- JsonReaderWriterFactory.cs
- SelectedDatesCollection.cs
- ParseChildrenAsPropertiesAttribute.cs
- DynamicPropertyReader.cs
- ColorBuilder.cs
- WhitespaceRuleReader.cs
- SystemIPAddressInformation.cs
- ServiceRouteHandler.cs
- MsmqInputChannelListenerBase.cs
- TextRunTypographyProperties.cs
- Drawing.cs
- WaitForChangedResult.cs
- XamlSerializerUtil.cs
- CodeAttachEventStatement.cs
- RequiredAttributeAttribute.cs
- NetWebProxyFinder.cs
- MarkupObject.cs
- DataGridCaption.cs
- ImageCodecInfoPrivate.cs
- AuthenticateEventArgs.cs