Знакомство с объектами DataRelation

Наборы данных, содержащие связанные данные таблиц, используют объекты DataRelation для представления отношения подчинения между таблицами и возврата для каждой таблицы связанных записей из другой таблицы.При добавлении связанных таблиц в наборы данных с помощью Мастера настройки источника данных или Конструктора источников данных создается и настраивается объект DataRelation.Дополнительные сведения о получении связанных записей см. в разделе Практическое руководство. Получение доступа к записям в связанных объектах DataTable.Сведения о создании отношений см. в разделе Практическое руководство. Создание объектов DataRelation с помощью конструктора набора данных.

Объект DataRelation выполняет две функции:

  • Открывает доступ к записям, связанным с рабочей записью.Предоставляет дочерние записи при работе с родительскими (GetChildRows) и наоборот — предоставляет родительские записи при работе с дочерними (GetParentRow ).

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

Важно понять разницу между реальным объединением и использованием функции объекта DataRelation.При реальном объединении записи берутся из родительской и дочерней таблиц и помещаются в один плоский набор записей.При использовании объекта DataRelation новый набор записей не создается.Вместо этого отслеживаются отношения между таблицами и поддерживается синхронизация родительских и дочерних записей.

Объекты DataRelation и ограничения

Объект DataRelation также используется для создания и введения следующих ограничений:

  • Ограничение уникальности, которое гарантирует, что столбец таблицы не содержит дублирующихся значений.

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

Ограничения, заданные в объекте DataRelation, реализуются посредством автоматического создания соответствующих объектов или настройки свойств.При создании ограничения внешнего ключа с помощью объекта DataRelation экземпляры класса ForeignKeyConstraint добавляются в свойство ChildKeyConstraint объекта DataRelation.

Ограничение уникальности реализуется либо присвоением свойству Unique столбца данных значения true, либо добавлением экземпляра класса UniqueConstraint в свойство ParentKeyConstraint объекта DataRelation.Сведения о приостановке ограничений в наборе данных см. в разделе Практическое руководство. Отключение ограничений при заполнении набора данных.

0k21zcyx.collapse_all(ru-ru,VS.110).gifПравила целостности данных

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

  • При обновлении родительской записи

  • При удалении родительской записи

  • При принятии или отклонении изменения

Правила, которые можно задать, определены в перечислении Rule и представлены в следующей таблице.

Правило ограничения внешнего ключа

Действие

Cascade

Изменение (обновление или удаление), вносимое в родительскую запись, также переносится в связанные с ней записи дочерней таблицы.

SetNull

Дочерние записи не удаляется, но внешний ключ в дочерних записях устанавливается в DBNull.С этим параметром дочерние записи могут остаться "потерянными объектами", т. е. не иметь отношений с родительскими записями.

ПримечаниеПримечание
В результате использования данного правила в дочерней таблице могут содержаться неправильные данные.

SetDefault

Внешнему ключу в связанных дочерних записях присваивается значение по умолчанию (как было определено свойством DefaultValue столбца).

None

В дочернюю запись не вносятся никакие изменения.С этой настройкой дочерние записи могут содержать ссылки на неверные родительские записи.

Дополнительные сведения об обновлениях в таблицах набора данных см. в разделе Сохранение данных в наборах данных.

0k21zcyx.collapse_all(ru-ru,VS.110).gifОтношения, используемые только для ограничений

При создании объекта DataRelation имеется возможность указать, что отношение будет использоваться только для введения ограничений. Это означает, что оно не будет использоваться для доступа к связанным записям.Это позволяет создавать несколько более эффективный набор данных, содержащий меньшее число методов, чем набор данных, в котором предусмотрена возможность использования связанных записей.Однако получить доступ к связанным записям невозможно.Например, отношение, предусматривающее только ограничение, не позволяет удалять родительскую запись, имеющую дочерние записи, и при этом нельзя получить доступ к дочерним записям с помощью родительской.

См. также

Ссылки

DataRelation

GetChildRows

GetParentRows

мастер настройки источника данных

Основные понятия

Работа с наборами данных в Visual Studio

Подготовка приложения к получению данных

Редактирование данных в приложении

Создание и изменение типизированных наборов данных