Se si imposta la proprietà PrimaryKey di un DataTable su una o più colonne, viene automaticamente aggiunto uno UniqueConstraint su tali colonne. Supponiamo che dt e col1 siano, rispettivamente, un DataTable e un DataColumn che fa parte della collezione Columns di dt; eseguendo il seguente codice:
1 dt.PrimaryKey = new DataColumn[] { col1 };
2 UniqueConstraint unique = new UniqueConstraint(col1);
3 dt.Constraints.Add(unique);
Si ottiene una DataException alla riga 3, perché il constraint è già stato implicitamente aggiunto quando è stata impostata la chiave primaria della tabella (riga 1). Se, invece, si cambia l'ordine di esecuzione, spostando in fondo la prima istruzione:
1 UniqueConstraint unique = new UniqueConstraint(col1);
2 dt.Constraints.Add(unique);
3 dt.PrimaryKey = new DataColumn[] { col1 };
L'esecuzione avviene senza problemi.
La nuova versione di SQL Server Compact 3.5 Beta 2, oltre ad essere inclusa in Visual Studio 2008, è da qualche giorno disponibile anche come download separato. Notare che il termine "Edition" sembra stato eliminato. Il download del runtime è disponibile qui, mentre a questo indirizzo sono disponibili i Server Tools.