Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Общие сведения о сохранении данных в наборах данных

Сохранение данных – процесс переноса изменений данных в приложении обратно к исходному хранилищу данных, обычно реляционной базе данных, например SQL Server.

Так как набор данных является кэшем данных, то есть их копией в памяти, процесс записи сведений в исходный источник данных отделен от процесса изменения данных в наборе данных. Можно отправить обновленные данные из наборов данных обратно к базе данных путем вызова одного из методов UpdateTableAdapterили вызвать один из методовDBDirectобъектаTableAdapter.

Двухэтапные обновления

Обновление источника данных посредством набора данных осуществляется в два этапа. Первый этап – это обновление набора данных и добавление новых сведений: новых записей, измененных записей или удаленных записей. Если приложение отвечает только за обработку набора данных, (например после обновления набора данных он отправляется в другое приложение, которое выполняет дальнейшую обработку набора данных), тогда обновление заканчивается.

Примечание

В Windows Forms архитектура привязки к данным занимается отправкой изменений из элементов управления с привязкой к данным в набор данных, поэтому не требуется в явном виде обновлять набор данных при помощи собственного кода. Дополнительные сведения см. в разделе Связывание элементов управления Windows Forms с данными.

При обновлении источника данных (например базы данных) на втором этапе изменения, внесенные в набор данных, будут отправлены в исходный источник данных. Таким образом, процесс обновления набора данных не записывает также изменения в базовом источнике данных. Необходимо в явном виде выполнять этот второй шаг. Обычно эта операция реализуется посредством вызова метода Update того же адаптера таблицы (или адаптера данных), который используется для заполнения набора данных, хотя допускается использование и других адаптеров, например для перемещения данных из одного источника в другой или для обновления нескольких источников данных.

Процесс двухэтапного обновления и роль DataRowVersionв успехе обновления представлены на рис. ??

Рис. ?? Схема двухэтапного обновления

Структурно набор данных делает данные доступными в качестве набора коллекций. Наборы данных содержат коллекции таблиц. Таблицы содержат коллекции строк. Записи доступны в коллекции RowsобъектовDataTable. Таким образом, можно вносить изменения в данные набора данных, просто управляя этими коллекциями, используя базовые методы работы с ними. Однако если требуется обновить базовый источник данных, необходимо использовать специальные методы изменения наборов данных.

Например, чтобы удалить запись из таблицы данных, следует вызвать метод RemoveAtpublic void RemoveAt(int index )

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

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