Реклама:

dt.PrimaryKey = new DataColumn[]{col1};

_I

Пример. Первичный ключ состоит из более чем одного столбца: //---создание таблицы

DataTable dt = new DataTable("SostavOtdela"); //---создание столбцов

DataColumn colO = new DataColumn("Otdel", typeof(System.String)); DataColumn coll = new DataColumn("FIO", typeof(System.String)); DataColumn col2 = new DataColumn("Dolgnost", typeof(System.String));

//---добавляем столбцы к таблице

dt.Columns.Add(colO); dt.Columns.Add(coll);

dt.Columns.Add(col2);

//---задаем первичный ключ для таблицы

dt.PrimaryKey = new DataColumn[]{col0, coll};

_I

Вообще говоря, столбцы, входящие в состав первичного ключа, должны быть уникальными, т. е. иметь установленным в значение true свойство

public bool Unique {get; set;}

и не позволять хранить пустые значение, т. е. свойство такого столбца

public bool AllowDBNull {get; set;} должно содержать false.

На практике в этом нет необходимости: как только столбец включается в состав первичного ключа, его свойства Unique и AllowDBNull автоматически получат значения true и false соответственно. В этом нетрудно убедиться из следующего примера.

Пример. Создадим таблицу из двух столбцов FIO (фамилия) и Dolgnost (должность). Первичный ключ построим по столбцу FIO. Добавим три записи: //---создание таблицы

DataTable dt = new DataTable("SostavOtdela"); //---создание столбцов

DataColumn coll = new DataColumn("FIO", typeof(System.String));

DataColumn col2 = new DataColumn("Dolgnost", typeof(System.String));

//---добавляем столбцы к таблице

dt.Columns.Add(coll); dt.Columns.Add(col2);

//---задаем первичный ключ для таблицы

dt.PrimaryKey = new DataColumn[]{col1};

//---добавляем записи в таблицу

DataRow rl = dt.NewRow(); DataRow r2 = dt.NewRow(); DataRow r3 = dt.NewRow(); r1["FIO"] = "Иванов"; r1["Dolgnost"] = "инженер"; r2["FIO"] = "Петров";

r2["Dolgnost"] = " зав.лаб.";

r3["FIO"] = "Сидоров";

r3["Dolgnost"] = " аспирант";

dt.Rows.Add(rl); dt.Rows.Add(r2); dt.Rows.Add(r3);

Попробуем теперь добавить в таблицу еще одного Иванова:

DataRow r4 = dt.NewRow(); r4["FIO"] = "Иванов"; r4["Dolgnost"] = "нач. отдела"; dt.Rows.Add(r4);

и сразу получим исключение по нарушению уникальности значений первичного ключа таблицы.

3.4.10. Добавление ограничений уникального столбца

Для любого столбца таблицы данных, допускающего только уникальные значения, в коллекции Constraints таблицы

public ConstraintCollection Constraints {get;}

должно задаваться ограничение уникального столбца - объект класса System.Da-ta.UniqueConstraint.

Для столбцов первичного ключа это ограничение создается автоматически (одно на все столбцы, входящие в состав первичного ключа таблицы).

Для прочих "уникальных" столбцов таблицы, не входящих в состав первичного ключа ограничение UniqueConstraint следует создать вручную при помощи одной из следующих разновидностей конструктора:


⇐ Предыдущая страница| |Следующая страница ⇒