Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Несвязный уровень взаимодействия ADO.NET






При работе на несвязном уровне ADO.NET по-прежнему нужно использовать объекты соединения и команды. Кроме того, необходимо использовать специальный объект, называемый адаптером данных (и расширяющий абстрактный DbDataAdapter), чтобы извлекать и обновлять данные.

Объект адаптера данных поставщика данных обрабатывает соединение с базой данных автоматически. С целью расширения возможностей масштабируемости адаптеры данных сохраняют соединение открытым минимально возможное время. Как только вызывающая сторона получает объект DataSet соединение с СУБД разрывается, и вызывающая сторона остается со своей локальной копией удаленных данных. В сущности, DataSet позволяет клиенту имитировать постоянно открытое соединение, в то время как реальные операции выполняются с наборами данных, находящимися в памяти.

В отличие от связного слоя, данные, полученные с помощью адаптера данных, не обрабатываются с помощью объекта чтения данных. Вместо этого для перемещения данных между вызывающей стороной и источником данных объекты адаптера данных (DataAdapter) используют объекты DataSet. Тип DataSet – это контейнер, используемый для любого числа объектов DataTable, каждый из которых содержит коллекцию объектов DataRow и DataColumn.

В рамках отсоединенной модели ADO.NET объект DataSet становится важным элементом технологии отсоединенного доступа. Объект-представитель DataSet представляет множество таблиц.

Для успешного решения задачи представления в DataSet есть все необходимое. Его функциональные возможности позволяют загрузить в локальное хранилище на стороне приложения данные из любого допустимого для ADO.NET источника: SQL Server, Microsoft Access, XML-файл.

В числе данных – членов этого класса имеется набор Tables. Объект DataSet может содержать таблицы, количество которых ограничивается лишь возможностями набора Tables.

Для каждой таблицы – элемента набора Tables может быть (и, естественно, должна быть) определена структура таблицы. В случае, когда приложение взаимодействует с реальной базой данных, структура таблиц в DataSet должна соответствовать структуре таблиц в базе данных. DataSet – это находящийся в памяти объект ADO.NET, используемый в приложении для представления данных; он определяет согласованную реляционную модель базы данных, которая не зависит от источника содержащихся в нем данных. Степень полноты модели определяется задачами, которые решает приложение.

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

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

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

Любой объект-представитель класса DataSet позволяет организовать чтение и запись содержимого (теоретически – информации из базы) в файл или область памяти. При этом можно читать и сохранять:

- только содержимое объекта (собственно информацию из базы);

- только структуру объекта – представителя класса DataSet;

- полный образ DataSet (содержимое и структуру).

Таким образом, DataSet является основой для построения различных вариантов отсоединенных объектов – хранилищ информации.

Класс DataSet – класс и не абстрактный и не интерфейс. Это значит, что существует множество вариантов построения отсоединенных хранилищ.

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

Можно также создать объект – представитель класса DataSet оригинальной конфигурации и добавить непосредственно к этому объекту все необходимые составляющие в виде таблиц (объектов – представителей класса Table) соответствующей структуры и множества отношений Relation.

Объект – представитель класса DataSet и сам по себе, без сопутствующего окружения, представляет определенную ценность. Дело в том, что информация, представляемая в приложении в виде таблиц, не обязательно должна иметь внешний источник в виде реальной базы данных. Ничто не мешает программисту обеспечить в приложении чтение обычного " плоского" файла или даже " накопить" необходимую информацию посредством интерактивного взаимодействия с пользователем, используя при этом обычный диалог. В конце концов, база данных – это один из возможных способов организации информации (а не только ее хранения!). Не случайно DataSet представляет отсоединенные данные.

База данных характеризуется множеством таблиц и множеством отношений между таблицами.

Объявление класса DataSet включает:

- набор (возможно, что пустой) объявлений классов DataTable (фактически это описание структуры таблиц, составляющих данный класс DataSet);

- набор объявлений классов DataRelations, который обеспечивает установку связей между разными таблицами в рамках данного DataSet.

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

Объект – представитель данного класса DataSet обеспечивает представление в памяти компьютера фрагмента данной БД. Этот объект является локальным представлением (фрагмента) БД.

В свою очередь, в приложении, обеспечивающем взаимодействие с базой данных, объект DataSet функционирует исключительно за счет объекта DataAdapter, который обслуживает DataSet.

При этом DataAdapter является центральным компонентом архитектуры отсоединенного доступа.

Объект DataAdapter – составная часть провайдера данных. Это подсоединенная компонента объектной модели ADO.NET. Он обеспечивает связь между источником данных и объектом DataSet и используется для двух целей – заполнения объекта DataSet и модификации источника данных.

Функциональные возможности DataAdapter реализуются за счет метода Fill(), который изменяет данные в DataSet. При выполнении метода Fill() объект DataAdapter заполняет DataTable или DataSet данными, полученными из БД.

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

Фактически, DataAdapter управляет обменом данных и обновлением содержимого источника данных.

DataAdapter предоставляет набор команд для подключения к БД и модификации данных.

Достойны особого внимания четыре свойства этого класса, фактически представляющие команды БД. Через эти команды объект DataAdapter и воздействует на DataSet и БД.

1. SelectCommand – содержит текст (строку sql) или объект команды, осуществляющей выборку данных из БД. При вызове метода Fill() эта команда выполняется и заполняет объект DataTable или объект DataSet.

2. InsertCommand – содержит текст (строку sql) или объект команды, осуществляющий вставку строк в таблицу.

3. DeleteCommand – содержит текст (строку sql) или объект команды, осуществляющий удаление строки из таблицы.

4. UpdateCommand – содержит текст (строку sql) или объект команды, осуществляющий обновление значений в БД.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.