Иерархическое обновление

 

Опубликовано: Апрель 2016

Иерархическое обновление — это процесс сохранения обновленных данных (из набора данных двух или более связанных таблиц) обратно в базу данных, сохраняя ограничения ссылочной целостности. Целостность данных — это правила согласованности условий, заданные с помощью ограничений в базе данных и управляющие поведением вставки, обновления и удаления связанных записей. Например, именно целостность данных обеспечивает создание записи клиента перед тем, как будет разрешено создавать заказы для этого клиента.

Сохранение измененных данных из связанных таблиц несколько сложнее, чем сохранение данных из одной таблицы. Это происходит потому, что команды UPDATE, INSERT и DELETE для каждой связанной таблицы должны быть выполнены в определенном порядке, во избежание нарушения ограничений целостности данных. В качестве примера рассмотрим приложение для ввода заказа, при помощи которого можно управлять как новыми, так и существующими клиентами и заказами. Если нужно удалить существующего клиента, необходимо сначала удалить все заказы этого клиента перед удалением записи клиента. При добавлении нового клиента (с заказом) сначала следует вставить новую запись клиента перед вставкой заказов этого клиента из-за существующих в таблице ограничений внешнего ключа. Как видно из этих примеров, необходимо извлекать определенные подмножества данных и отправлять обновления (вставки, обновления и удаления) в правильном порядке для поддержания целостности данных.

Средства иерархического обновления используют TableAdapterManager для управления TableAdapter в типизированном наборе данных. Компонент TableAdapterManager является компонентом, сгенерированным Visual Studio, поэтому он не является частью .NET Framework. Подробные сведения о классе TableAdapterManager см. в разделе "Ссылка TableAdapterManager" в Общие сведения о компоненте TableAdapterManager.

Если приложение использует типизированные наборы данных и дает пользователям возможность изменения данных в связанных таблицах данных (таблицы данных в отношении "один ко многим", например Customers и Orders), возможно, потребуется использовать иерархическое обновление.

В этом подразделе

Общие сведения об иерархическом обновлении
Пояснения относительно того, что такое иерархическое обновление, и сведения о том, как оно реализуется.

Общие сведения о компоненте TableAdapterManager
Пояснения относительно того, что такое TableAdapterManager, и описание кода TableAdapterManager, создаваемого конструктором наборов данных.

Практическое руководство. Разрешение и запрет иерархического обновления
Описание способов задания свойства Hierarchical Update типизированного набора данных для генерации кода сохранения связанных таблиц.

Практическое руководство. Настройка ограничений внешнего ключа в наборе данных
Описание способов настройки ограничений в наборе данных.

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

Практическое руководство. Установка порядка выполнения иерархического обновления
Описание способов задания свойства UpdateOrder объекта TableAdapterManager для управления порядком выполнения вставки, обновления и удаления.

Практическое руководство. Реализация иерархического обновления в существующих проектах Visual Studio
Описание способов обновления приложения, имеющего связанные таблицы данных, для сохранения данных с помощью TableAdapterManager.

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

Ссылка

DataSet

DataTable

Связанные подразделы

Работа с наборами данных в N-уровневых приложениях

Сохранение данных

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

адаптеры таблиц TableAdapter

Объекты DataSet, DataTable и DataView

DataTables

Доступ к данным в Visual Studio