A mellékelt példában bemutatjuk, hogy hogyan használható a DataTable osztály Constraints property-je, valamint részletesen megismerkedhetünk azzal, hogy milyen osztály megadásával deklarálhatunk UNIQUE-megszorítást az adattábla oszlopaira anélkül, hogy ezt adatbázisszinten kellene megtennünk. Példánk futtatásához nincs is szükség előzetesen adatbázis létrehozására.
A DataTable osztály Constraints property-jén keresztül érhetjük el azt az objektumgyűjteményt, melybe előzetesen létrehozott, és paraméterezett megszorítás objektumokat vehetünk fel. Deklarációja a követező:

Constraints
Osztály: DataTable
public ConstraintCollection Constraints {get;}
A property tehát egy megszorítás gyűjtemény, amelybe tetszőleges számú megszorítás objektum elhelyezhető. Egy tömbről van szó, így használható a tömbök esetén ismert valamennyi metódus (Add, Clear, AddRange,…), valamint elemeire azok sorszámával is hivatkozhatunk.
Az említett UNIQUE-megszorítás megadásához deklarálnunk kell egy UniqueConstraint osztályú objektumot, majd ennek property-jein keresztül megadni, hogy mely oszlopokra szeretnénk kiterjeszteni a megszorítás érvényét. Most megvizsgáljuk az osztály leggyakrabban használt property-jeit:

Columns
Osztály: UniqueConstraint
public virtual DataColumn[] Columns {get;}
A tömb elemei reprezentálják azokat a DataColumn típusú oszlopokat, melyekre vonatkozik az adott megszorítás, vagyis ezen oszlopok minden elemének egyedinek kell lennie.

ConstraintName
Osztály: UniqueConstraint
public virtual string ConstraintName {get; set;}
Nevet adhatunk az illető megszorításnak, mellyel a megszorítás objektumra hivatkozhatunk a DataTable osztályban.

IsPrimaryKey
Osztály: UniqueConstraint
public bool IsPrimaryKey {get;}
Lekérdezhető, hogy az adott megszorítás elsődleges kulcs megszorítás-e. Értéke TRUE, ha igen, ellenkező esetben FALSE.

Table
Osztály: UniqueConstraint
public override DataTable Table {get;}
Lekérdezhető, hogy az adott megszorítás mely táblához tartozik.
Metódusai közül konstruktorait említhetnénk, melyeknek kilenc variációja létezik. Legtöbb beállítást a következő konstruktorban tehetünk meg:

UniqueConstraint
Osztály: UniqueConstraint
public UniqueConstraint(
string name,
DataColumn[] columns,
bool isPrimaryKey
);
Megadhatjuk a megszorítás objektum nevét, az oszlopgyűjteményt, amelyekre a megszorítás érvényes, valamint beállíthatjuk, hogy elsődleges kulcs megszorítást akarunk létrehozni, vagy sem.
Paraméterek
string name
A megszorítás neve.
DataColumn[] columns
Az oszloplista.
bool isPrimaryKey
Az elsődleges kulcs megszorításra vonatkozó érték.
A mellékelt programban a FillTable metódussal indulás előtt feltöltünk egy DataTable objektumot, majd ennek tartalmát megjelenítjük egy DataGrid kontrolban. A FillTable metódusban, miután deklaráltuk, és a DataTable objektumba fölvettük a táblaoszlopokat, megadjuk a UNIQUE-megszorításra vonatkozó információkat, vagyis deklarálunk egy UniqueConstraint osztályú objektumot, konstruktorában megadva, hogy az első táblaoszlopra vonatkozzon az adott megszorítás:
UniqueConstraint uc = new UniqueConstraint(dc1);
Valamint elhelyezzük a megszorítás objektumot a DataTable objektum Constraints megszorítás listájában:
A táblázat alatt elhelyezett beviteli mezőkbe adatokat megadva új rekordok vihetők be az adattáblába. Az ID oszlop adatainak ismétlődése esetén egy ConstraintException kivétel keletkezik, melyet a programban elkaptunk.
Azonban amikor a DataGrid kontrolba manuálisan próbálunk már létező ID-vel rendelkező rekordot bevinni, akkor a rendszer által generált üzenetet kapunk a megszorítás létezéséről, illetve választanunk kell: a bevinni szándékozott adatot javítjuk, vagy a bevitt oszlopérték törlődik.