.NET Framework Class Library  

Constraint Class

Represents a constraint that can be enforced on one or more DataColumn objects.

For a list of all members of this type, see Constraint Members.

System.Object
   System.Data.Constraint
      System.Data.ForeignKeyConstraint
      System.Data.UniqueConstraint

[Visual Basic]
<Serializable>
MustInherit Public Class Constraint
[C#]
[Serializable]
public abstract class Constraint
[C++]
[Serializable]
public __gc __abstract class Constraint
[JScript]
public
   Serializable
abstract class Constraint

Thread Safety

This type is safe for multithreaded read operations. You must synchronize any write operations.

Remarks

A constraint is a rule used to maintain the integrity of the data in the DataTable. For example, when you delete a value that is used in one or more related tables, a ForeignKeyConstraint determines whether the values in the related tables are also deleted, set to null values, set to default values, or whether no action occurs. A UniqueConstraint, on the other hand, simply ensures that all values within a particular table are unique. For more information, see Adding Constraints to a Table.

A base Constraint constructor is not used. Primary or unique key constraints are created using the UniqueConstraint constructor, and foreign key constraints are created using the ForeignKeyConstraint constructor.

Example

[Visual Basic, C#] The following example checks the collection of constraints for a DataTable and determines if each constraint is a UniqueConstraint or a ForeignKeyConstraint. The properties of the constraint are then displayed.

[Visual Basic] 
Private Sub GetConstraints(myTable As DataTable)
    Console.WriteLine()
    ' Print the table's name.
    Console.WriteLine("TableName: " + myTable.TableName)
    ' Iterate through the collection and print each name and type value.
    Dim cs As Constraint
    For Each cs In  myTable.Constraints
        Console.WriteLine("Constraint Name: " + cs.ConstraintName)
        Console.WriteLine("Type: " + cs.GetType().ToString())
        ' If the constraint is a UniqueConstraint, print its properties
        ' using a function below.
        If TypeOf cs Is UniqueConstraint Then
            PrintUniqueConstraintProperties(cs)
        End If
        ' If the constraint is a ForeignKeyConstraint, print its properties
        ' using a function below.
        If TypeOf cs Is ForeignKeyConstraint Then
            PrintForeigKeyConstraintProperties(cs)
        End If
    Next cs
End Sub

Private Sub PrintUniqueConstraintProperties(cs As Constraint)
    Dim uCS As UniqueConstraint
    uCS = CType(cs, UniqueConstraint)
    ' Get the Columns as an array.
    Dim colArray() As DataColumn
    colArray = uCS.Columns
    ' Print each column's name.
    Dim i As Integer
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Column Name: " + colArray(i).ColumnName)
    Next i
End Sub

Private Sub PrintForeigKeyConstraintProperties(cs As Constraint)
    Dim fkCS As ForeignKeyConstraint
    fkCS = CType(cs, ForeignKeyConstraint)
    
    ' Get the Columns as an array.
    Dim colArray() As DataColumn
    colArray = fkCS.Columns
    
    ' Print each column's name.
    Dim i As Integer
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Column Name: " + colArray(i).ColumnName)
    Next i
    Console.WriteLine()
    
    ' Get the related columns and print each columns name.
    colArray = fkCS.RelatedColumns
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Related Column Name: " + colArray(i).ColumnName)
    Next i
    Console.WriteLine()
End Sub

[C#] 
private void GetConstraints(DataTable myTable){
   Console.WriteLine();
   // Print the table's name.
   Console.WriteLine("TableName: " + myTable.TableName);
   // Iterate through the collection and print each name and type value.
   foreach(Constraint cs in myTable.Constraints ) {
      Console.WriteLine("Constraint Name: " + cs.ConstraintName);
      Console.WriteLine("Type: " + cs.GetType().ToString());
      // If the constraint is a UniqueConstraint, print its properties using
      // a function below.
      if(cs is UniqueConstraint) {
         PrintUniqueConstraintProperties(cs);
      }
      // If the constraint is a ForeignKeyConstraint, print its properties
      // using a function below.
      if(cs is ForeignKeyConstraint) {
         PrintForeigKeyConstraintProperties(cs);
      }
   }
}

private void PrintUniqueConstraintProperties(Constraint cs){
   UniqueConstraint uCS;
   uCS = (UniqueConstraint) cs;
   // Get the Columns as an array.
   DataColumn[] colArray;
   colArray = uCS.Columns;
   // Print each column's name.
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Column Name: " + colArray[i].ColumnName);
   }
}

private void PrintForeigKeyConstraintProperties(Constraint cs){
   ForeignKeyConstraint fkCS;
   fkCS = (ForeignKeyConstraint) cs;

   // Get the Columns as an array.
   DataColumn[] colArray;
   colArray = fkCS.Columns;

   // Print each column's name.
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Column Name: " + colArray[i].ColumnName);
   }
   Console.WriteLine();

   // Get the related columns and print each columns name.
   colArray = fkCS.RelatedColumns ;
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Related Column Name: " + colArray[i].ColumnName);
   }
   Console.WriteLine();
}

[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Data

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework - Windows CE .NET

Assembly: System.Data (in System.Data.dll)

See Also

Constraint Members | System.Data Namespace | ConstraintCollection | Constraints | ForeignKeyConstraint | UniqueConstraint