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
- DataGridItemEventArgs.cs
- SizeIndependentAnimationStorage.cs
- DataRelationCollection.cs
- RequestQueue.cs
- Memoizer.cs
- CommandLineParser.cs
- UserCancellationException.cs
- SapiRecoInterop.cs
- HierarchicalDataSourceControl.cs
- _RegBlobWebProxyDataBuilder.cs
- StreamGeometry.cs
- ArcSegment.cs
- ComboBox.cs
- ZoneLinkButton.cs
- DesigntimeLicenseContext.cs
- ArrayList.cs
- UniqueConstraint.cs
- ImageClickEventArgs.cs
- Point3DIndependentAnimationStorage.cs
- ListItemConverter.cs
- TextBoxBase.cs
- DPTypeDescriptorContext.cs
- CustomCredentialPolicy.cs
- DrawingVisual.cs
- Types.cs
- FieldBuilder.cs
- SubMenuStyleCollection.cs
- SatelliteContractVersionAttribute.cs
- ProtocolElementCollection.cs
- AsyncResult.cs
- Peer.cs
- DataGridViewTopRowAccessibleObject.cs
- RegularExpressionValidator.cs
- GenericPrincipal.cs
- TableNameAttribute.cs
- Font.cs
- BaseDataBoundControlDesigner.cs
- UnsafeNativeMethods.cs
- SiteMembershipCondition.cs
- ResourceAssociationSetEnd.cs
- DetailsViewModeEventArgs.cs
- DesignerHierarchicalDataSourceView.cs
- SystemThemeKey.cs
- PkcsMisc.cs
- FolderBrowserDialog.cs
- CollectionViewSource.cs
- BitmapEffectState.cs
- TypeUnloadedException.cs
- ConstantProjectedSlot.cs
- DbConnectionPoolCounters.cs
- StreamedFramingRequestChannel.cs
- DataViewSettingCollection.cs
- ProtocolsSection.cs
- BinHexEncoder.cs
- NameValueConfigurationElement.cs
- StringCollection.cs
- ManagementEventWatcher.cs
- TextServicesPropertyRanges.cs
- GlyphInfoList.cs
- CheckBox.cs
- InfoCardSymmetricCrypto.cs
- AnonymousIdentificationModule.cs
- JoinGraph.cs
- TextBounds.cs
- CreateUserWizardStep.cs
- Intellisense.cs
- GroupByExpressionRewriter.cs
- Compiler.cs
- NameObjectCollectionBase.cs
- ComboBoxAutomationPeer.cs
- OleDbTransaction.cs
- TemplatedMailWebEventProvider.cs
- DynamicFilter.cs
- DataGridPagerStyle.cs
- NamedObject.cs
- CodeExporter.cs
- ItemCheckEvent.cs
- MatrixConverter.cs
- ProgressBar.cs
- KeyNameIdentifierClause.cs
- AtomContentProperty.cs
- DataGridViewColumnStateChangedEventArgs.cs
- HttpGetProtocolImporter.cs
- SQLByteStorage.cs
- ListItemCollection.cs
- DispatcherExceptionFilterEventArgs.cs
- ErrorRuntimeConfig.cs
- isolationinterop.cs
- HttpCacheVary.cs
- PEFileReader.cs
- GregorianCalendar.cs
- WmlCommandAdapter.cs
- LogEntryHeaderDeserializer.cs
- Container.cs
- CryptoKeySecurity.cs
- RegisteredExpandoAttribute.cs
- SqlDependencyUtils.cs
- ServiceModelExtensionCollectionElement.cs
- LookupBindingPropertiesAttribute.cs
- RichTextBoxAutomationPeer.cs