Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ShPORY_BD.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.64 Mб
Скачать

Хранение данных в наборах данных

Набор данных - это реляционное представление данных, которое в свою очередь может быть представлено в виде XML. Тесная связь между наборами данных и XML позволяет получить следующие преимущества:

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

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

Как правило, в приложениях необходимо извлечь информацию из базы данных и выполнить с ней некоторые действия: показать пользователю на экране монитора, сделать нужные расчеты или послать данные в другой компонент. Очень часто, в приложении нужно обработать не одну запись, а их набор: список клиентов, перечень заказов, набор элементов заказа и т. п. Как правило, в приложениях требуется одновременная работа с более чем одной таблицей: клиенты и все их заказы; автор и все его книги, заказ и его элементы, т. е. с набором связанных данных. Причем для удобства пользователя данные требуется группировать и сортировать то по одному, то по другому признаку. При этом нерационально каждый раз возвращаться к исходной базе данных и заново считывать данные. Более практично работать с некой временной "вырезкой" информации, хранящейся в оперативной памяти компьютера.

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

Модель наборов данных имеет следующие преимущества:

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

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

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

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

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

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

Облегчение программирования. При работе с набором данных можно создать файл класса, предоставляющий структуру набора в виде объектов (например, к таблице Customers набора данных можно получить доступ как к объекту dataset.Customers). Это делает процесс программирования более простым, понятным и менее склонным к ошибкам. Все это поддерживается такими средствами Visual Studio, как IntelliSense, мастер настройки адаптеров данных и т. п.

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

Создать типизированный набор данных можно, запустив мастер Мастер конфигурации источников данных, или путем добавления элемента DataSet с помощью команды "Добавить новый элемент" в меню "Проект".

Типизированный набор данных извлекается из базового класса DataSet и затем использует сведения из Конструктора наборов данных, которые хранятся в XSD-файле, для создания нового строго типизированного класса набора данных. Сведения, указанные в схеме (таблицы, столбцы и т. д.), создаются и компилируются в этот новый класс набора данных как набор объектов и свойств первичного класса. Так как типизированные наборы данных наследуются от базового класса DataSet, типизированный класс обладает всеми функциональными возможностями класса DataSet и может использоваться с методами, принимающими экземпляр класса DataSet в качестве параметра.

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

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

Типизированный доступ не только отличается большей удобочитаемостью, но и полностью поддерживается технологией IntelliSense в Редакторе кода Visual Studio. Помимо того, что с таким кодом проще работать, синтаксис для типизированного набора данных позволяет проверять типы во время компиляции, что существенно уменьшает вероятность ошибок при присвоении значений элементам набора данных. Если изменить имя столбца в DataSet и затем скомпилировать приложение, будет получена ошибка построения. Двойным щелчком клавишей мыши по ошибке построения в Списке задач можно перейти непосредственно к строке(-ам) кода, ссылающейся на старое имя столбца. Кроме того, доступ к таблицам и столбцам в типизированном наборе данных во время выполнения происходит несколько быстрее, так как доступ определяется на этапе компиляции, а не с помощью коллекций во время выполнения.

Хотя типизированные наборы данных обладают рядом преимуществ, во многих случаях целесообразно применять нетипизированные наборы. Самый очевидный сценарий - когда для набора данных нет доступной схемы. Такое может произойти, например, если приложение взаимодействует с компонентом, который возвращает набор данных, но при этом его структура заранее не известна. Иногда приходится работать с данными, не имеющими статической предопределенной структуры; в этом случае работать с типизированным набором данных нецелесообразно, так как приходится заново создавать класс типизированного набора данных при каждом изменении структуры данных.

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

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