ВУЗ:
Составители:
Рубрика:
127
Здесь первичным ключом будут значения поля «Код туриста» в сочета-
нии со значением поля «Фамилия».
После определения первичного ключа объекта DataTable для свойства
AllowDBNull (разрешение значений null) объектов DataColumn, формирующих
ключ, будет установлено значение false.
В проектах, содержащих большое количество связанных таблиц, следует
всегда определять свойство PrimaryKey. Это должно стать таким же правилом,
как и задание первичного ключа при проектировании самой базы данных.
Ограничения UniqueConstraint и ForeignKeyConstraint
Теперь осталось разобраться, как можно определять некоторые свойства
таблиц, называемые ограничениями. Свойство Constraint (ограничения) объекта
DataTable бывает двух типов – UniqueConstraint и ForeignKeyConstraint.
Свойство UniqueConstraint определяет первичный ключ таблицы, например,
в таблице Questions ключевым полем является questID. Объект dсQuestID пред-
ставляет это поле:
DataColumn dсQuestID = dtQuestions.Columns.Add("questID", typeof(Int32));
Ограничение UniqueConstraint, налагаемое на объект dсQuestID, запрещает
появление дублированных строк:
UniqueConstraint UC_dtQuestions = new UniqueConstraint(dсQuestID);
dtQuestions.Constraints.Add(UC_dtQuestions);
Однако при создании объекта dсQuestID мы ведь уже определяли его уни-
кальность:
dсQuestID.Unique = true;
Действительно, последняя строка представляет собой неявный способ за-
дания ограничения UniqueConstraint. Если уже определено уникальное поле или
поля с помощью свойства Unique, то задавать ограничение UniqueConstraint не
нужно.
Второе ограничение – ForeignKeyConstraint – определяет, как должны себя
вести дочерние записи при изменении родительских записей и наоборот. ADO
.NET требует точного описания объектов для управления ими, даже если изме-
нение данных приложением не предусматривается. Ограничение
ForeignKeyConstraint содержит следующие три правила:
• UpdateRule – применяется при изменении родительской строки;
• DeleteRule – применяется при удалении родительской строки;
• AcceptRejectRule – применяется при вызове метода AcceptChanges объекта
DataTable, для которого определено ограничение.
Для каждого из этих правил, кроме последнего AcceptRejectRule, могут
применяться следующие значения:
• Cascade – каскадное обновление связанных записей;
Страницы
- « первая
- ‹ предыдущая
- …
- 125
- 126
- 127
- 128
- 129
- …
- следующая ›
- последняя »