ADO.NET in a Nutshell
The ForeignKeyConstraint represents a restriction on a set of related columns . Usually, you don't create a ForeignKeyConstraint directly. Instead, you define and add a DataRelation to the DataSet.Relations collection. A corresponding ForeignKeyConstraint is added automatically to the DataTable.Constraints collection of the child table. When you have a ForeignKeyConstraint on a DataTable , certain actions are not allowed (such as creating a parent that references a nonexistent parent row). You can disable checking for constraint violations by setting DataSet.EnforceConstraints to false . The ForeignKeyConstraint allows you to configure what happens when the parent column is updated ( UpdateRule ), or when the parent row is deleted ( DeleteRule ) or has AcceptChanges( ) called on it ( AcceptRejectRule ). Out of these three options, the DeleteRule is the most commonly used. If you set the DeleteRule to Rule.Cascade , all child rows are deleted when the parent row is deleted. If you use Rule.SetNull , however, the foreign key field in the child record is set to a null value. If you use Rule.SetDefault , the foreign key field is set to a default value when the parent record is deleted. Finally, if you use Rule.None (the default), no action is taken. This results in an error when you attempt to remove a parent with child rows, when you have the DataSet.EnforceConstraints property set to true . public class ForeignKeyConstraint : Constraint { // Public Constructors public ForeignKeyConstraint (DataColumn[ ] parentColumns , DataColumn[ ] childColumns ); public ForeignKeyConstraint (DataColumn parentColumn , DataColumn childColumn ); public ForeignKeyConstraint (string constraintName , DataColumn[ ] parentColumns , DataColumn[ ] childColumns ); public ForeignKeyConstraint (string constraintName , DataColumn parentColumn , DataColumn childColumn ); public ForeignKeyConstraint (string constraintName , string parentTableName , string[ ] parentColumnNames , string[ ] childColumnNames , AcceptRejectRule acceptRejectRule , Rule deleteRule , Rule updateRule ); // Public Instance Properties public virtual AcceptRejectRule AcceptRejectRule {set; get; } public virtual DataColumn[ ] Columns {get; } public virtual Rule DeleteRule {set; get; } public virtual DataColumn[ ] RelatedColumns {get; } public virtual DataTable RelatedTable {get; } public override DataTable Table {get; } // overrides Constraint public virtual Rule UpdateRule {set; get; } // Public Instance Methods public override bool Equals ( object key ); // overrides object public override int GetHashCode ( ); // overrides object } Hierarchy
System.Object Returned By
DataRelation.ChildKeyConstraint |