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
- DataRelationPropertyDescriptor.cs
- Double.cs
- ReaderWriterLock.cs
- InputMethod.cs
- SystemIPGlobalProperties.cs
- DropDownList.cs
- EdmValidator.cs
- StrongNamePublicKeyBlob.cs
- PropertyMapper.cs
- ProcessHostConfigUtils.cs
- Item.cs
- TransformDescriptor.cs
- MethodMessage.cs
- RegistrySecurity.cs
- HashMembershipCondition.cs
- WindowsPrincipal.cs
- MappingMetadataHelper.cs
- WindowsListView.cs
- TreeView.cs
- UnauthorizedAccessException.cs
- SharedPerformanceCounter.cs
- DoubleAnimation.cs
- ScrollViewer.cs
- FixedNode.cs
- ContentPosition.cs
- Point3DAnimation.cs
- BindingManagerDataErrorEventArgs.cs
- UnsafeNativeMethodsMilCoreApi.cs
- AsymmetricSignatureFormatter.cs
- httpstaticobjectscollection.cs
- GenerateScriptTypeAttribute.cs
- Delegate.cs
- MemberCollection.cs
- DataKeyCollection.cs
- Polyline.cs
- EntityDataSourceState.cs
- BindUriHelper.cs
- DataBindingCollection.cs
- SortFieldComparer.cs
- ReferenceConverter.cs
- FormsAuthenticationModule.cs
- ApplicationSecurityManager.cs
- LocalBuilder.cs
- ImageMapEventArgs.cs
- HtmlHead.cs
- Convert.cs
- DataObjectAttribute.cs
- SelectionRange.cs
- SqlCrossApplyToCrossJoin.cs
- GB18030Encoding.cs
- EventRecordWrittenEventArgs.cs
- ConfigXmlDocument.cs
- DecimalConstantAttribute.cs
- PageContentCollection.cs
- PolicyStatement.cs
- TrackingProfileCache.cs
- HtmlInputRadioButton.cs
- OrthographicCamera.cs
- ObjectCloneHelper.cs
- ConfigXmlSignificantWhitespace.cs
- BinaryObjectInfo.cs
- DataObjectAttribute.cs
- DataGridItemAttachedStorage.cs
- SystemBrushes.cs
- _SSPISessionCache.cs
- DataSourceExpressionCollection.cs
- TimeManager.cs
- InterleavedZipPartStream.cs
- RequestDescription.cs
- filewebrequest.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- CngUIPolicy.cs
- SmtpDigestAuthenticationModule.cs
- HttpCookie.cs
- AdapterUtil.cs
- WsatServiceAddress.cs
- Model3D.cs
- MetaModel.cs
- EntityClientCacheKey.cs
- NativeMethods.cs
- ArrayConverter.cs
- ContentDisposition.cs
- streamingZipPartStream.cs
- AstNode.cs
- Transform3D.cs
- ReadOnlyState.cs
- SimplePropertyEntry.cs
- DbException.cs
- AsymmetricSignatureFormatter.cs
- DbUpdateCommandTree.cs
- CompilerWrapper.cs
- Error.cs
- handlecollector.cs
- BufferBuilder.cs
- AnimationException.cs
- CommandEventArgs.cs
- DSASignatureFormatter.cs
- WebConfigurationManager.cs
- CodeMemberProperty.cs
- TreeNodeCollection.cs