Знакомство с объектами DataRelation
Наборы данных, содержащие связанные данные таблиц, используют объекты DataRelation для представления отношения подчинения между таблицами и возврата для каждой таблицы связанных записей из другой таблицы.При добавлении связанных таблиц в наборы данных с помощью Мастера настройки источника данных или Конструктора источников данных создается и настраивается объект DataRelation.Дополнительные сведения о получении связанных записей см. в разделе Практическое руководство. Получение доступа к записям в связанных объектах DataTable.Сведения о создании отношений см. в разделе Практическое руководство. Создание объектов DataRelation с помощью конструктора набора данных.
Объект DataRelation выполняет две функции:
Открывает доступ к записям, связанным с рабочей записью.Предоставляет дочерние записи при работе с родительскими (GetChildRows) и наоборот — предоставляет родительские записи при работе с дочерними (GetParentRow ).
Вводит ограничения для обеспечения целостности данных, например, удаление связанной дочерней записи при удалении родительской записи.
Важно понять разницу между реальным объединением и использованием функции объекта DataRelation.При реальном объединении записи берутся из родительской и дочерней таблиц и помещаются в один плоский набор записей.При использовании объекта DataRelation новый набор записей не создается.Вместо этого отслеживаются отношения между таблицами и поддерживается синхронизация родительских и дочерних записей.
Объекты DataRelation и ограничения
Объект DataRelation также используется для создания и введения следующих ограничений:
Ограничение уникальности, которое гарантирует, что столбец таблицы не содержит дублирующихся значений.
Ограничение внешнего ключа, которое может использоваться для поддержания целостности данных между родительской и дочерней таблицами в наборе данных.
Ограничения, заданные в объекте DataRelation, реализуются посредством автоматического создания соответствующих объектов или настройки свойств.При создании ограничения внешнего ключа с помощью объекта DataRelation экземпляры класса ForeignKeyConstraint добавляются в свойство ChildKeyConstraint объекта DataRelation.
Ограничение уникальности реализуется либо присвоением свойству Unique столбца данных значения true, либо добавлением экземпляра класса UniqueConstraint в свойство ParentKeyConstraint объекта DataRelation.Сведения о приостановке ограничений в наборе данных см. в разделе Практическое руководство. Отключение ограничений при заполнении набора данных.
Правила целостности данных
В качестве части ограничения внешнего ключа можно задать правила целостности данных, которые применяются в следующих трех случаях:
При обновлении родительской записи
При удалении родительской записи
При принятии или отклонении изменения
Правила, которые можно задать, определены в перечислении Rule и представлены в следующей таблице.
Правило ограничения внешнего ключа |
Действие |
---|---|
Изменение (обновление или удаление), вносимое в родительскую запись, также переносится в связанные с ней записи дочерней таблицы. |
|
Дочерние записи не удаляется, но внешний ключ в дочерних записях устанавливается в DBNull.С этим параметром дочерние записи могут остаться "потерянными объектами", т. е. не иметь отношений с родительскими записями.
Примечание
В результате использования данного правила в дочерней таблице могут содержаться неправильные данные.
|
|
Внешнему ключу в связанных дочерних записях присваивается значение по умолчанию (как было определено свойством DefaultValue столбца). |
|
В дочернюю запись не вносятся никакие изменения.С этой настройкой дочерние записи могут содержать ссылки на неверные родительские записи. |
Дополнительные сведения об обновлениях в таблицах набора данных см. в разделе Сохранение данных в наборах данных.
Отношения, используемые только для ограничений
При создании объекта DataRelation имеется возможность указать, что отношение будет использоваться только для введения ограничений. Это означает, что оно не будет использоваться для доступа к связанным записям.Это позволяет создавать несколько более эффективный набор данных, содержащий меньшее число методов, чем набор данных, в котором предусмотрена возможность использования связанных записей.Однако получить доступ к связанным записям невозможно.Например, отношение, предусматривающее только ограничение, не позволяет удалять родительскую запись, имеющую дочерние записи, и при этом нельзя получить доступ к дочерним записям с помощью родительской.
См. также
Ссылки
мастер настройки источника данных
Основные понятия
Работа с наборами данных в Visual Studio
Подготовка приложения к получению данных