Работа с базами данных на языке C#. Технология АDO .NET. Евсеева О.Н - 127 стр.

UptoLike

Составители: 

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каскадное обновление связанных записей;