Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_redaktsia_2013.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
931.98 Кб
Скачать
  1. Конструктор наборов данных

Конструктор наборов данных представляет собой набор визуальных инструментов для создания и редактирования типизированных наборов данных и отдельных элементов, которые составляют набор данных.

Конструктор наборов данных обеспечивает визуальное представление объектов, содержащихся в типизированных наборах данных. С помощью Конструктора наборов данных можно создавать и изменять Адаптеры таблиц, Запросы адаптеров таблиц, DataTable, DataColumn и DataRelation.

Открытие набора данных в конструкторе наборов данных

Дважды щелкните набор данных (файл .xsd) в Обозревателе решений, чтобы открыть его в Конструкторе наборов данных.

либо

Выберите набор данных, который требуется открыть в окне Источники данных, щелкните правой кнопкой мыши и выберите Изменить набор данных с помощью конструктора. При добавлении нового элемента DataSet с помощью диалогового окна Добавление нового элемента откроется Конструктор наборов данных с пустым набором данных, готовым для редактирования.

Примечание. Конструктор наборов данных можно использовать для расширения функциональных возможностей набора данных. Дважды щелкните область конструктора или щелкните правой кнопкой мыши и выберите Просмотр кода, чтобы создать файл разделяемого класса, в который можно добавить код к набору данных, который не будет изменен или удален конструктором. Информация о расширении функциональных возможностей адаптера таблиц содержится в разделе Практическое руководство. Расширение функциональных возможностей адаптера таблицы.

Задачи, выполняемые конструктором наборов данных

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

  1. Связанные таблицы и объекты DataRelation

Если в наборе данных имеется несколько таблиц, то данные, содержащиеся в них, могут быть взаимосвязаны.

Набор данных не имеет встроенных сведений о таких отношениях, поэтому для работы с данными в связанных таблицах необходимо создать объекты DataRelation, которые описывают отношения между таблицами в наборе данных.

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

Отношения в наборах данных

Набор данных может содержать связанные таблицы, как реляционная база данных. DataRelation - это объект, упрощающий связь между таблицами данных. В следующих разделах содержатся сведения об объектах ADO.NET DataRelation, о процедуре их создания и об их использовании для работы с данными в связанных таблицах.

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

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

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

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

Важно понять разницу между реальным объединением и использованием функции объекта DataRelation.

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

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

Отношения также могут передавать различные изменения из родительской DataRow в ее дочерние строки. Чтобы контролировать, как изменяются значения в дочерних строках, добавьте ограничение внешнего ключа (ForeignKeyConstraint) в коллекцию ConstraintCollection объекта DataTable. ForeignKeyConstraint определяет, какое действие выполнять при удалении или изменении значения в родительской таблице.

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

Примечание. Если между двумя таблицами определена двунаправленная связь, может произойти порча данных. Двунаправленная связь состоит из двух объектов DataRelation, использующих одни и те же столбцы с перекрещивающимися ролями "родительский/дочерний". Исключение при сохранении объектов DataRelation не возникает; однако может произойти порча данных.

Объекты DataRelation содержатся в DataRelationCollection, доступ к которой возможен с помощью свойства Relations объекта DataSet и свойств ChildRelations и ParentRelations объекта DataTable.

Пример создания отношения

private void CreateRelation()

{

DataColumn parentColumn =

Borei.Tables["Suppliers"].Columns["CodeSuppliers"];

DataColumn childColumn =

Borei.Tables["Goods"].Columns["CodeGoods"];

DataRelation suppliersGoodsRelation;

suppliersGoodsRelation = new DataRelation("suppliersGoodsRelation",

parentColumn, childColumn);

Borei.Relations.Add(suppliersGoodsRelation);

}

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

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

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

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

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

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

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

Правила целостности данных

Отношения, используемые только для ограничений

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]