Главная » Microsoft SQL Server, Базы данных » Обзор AD0.NET – ЧАСТЬ 5

0

Многие разработчики страдают от того, что ошибочно считают ADO.NET всего лишь очередным обновлением объектной модели ADO. Модель ADO создавалась для поддержки приложений, использующих архитектуру “клиент/сервер” и предполагающих наличие постоянного соединения между пользователем и источником данных на протяжении всего цикла выполнения программы. Рискуя слишком упростить различия между этими моделями, отмечу, что ADO хранит состояние в источнике данных, а ADO.NET создавалась для возможности поддержки состояния при отсутствии подключения к базе данных. Одним из главных достоинств среды .NET является отсутствие необходимости наличия постоянного подключения приложения к базе данных на протяжении всего цикла выполнения. В некоторой степени эта конструктивная цель была достигнута с помощью технологии XML, которая легла в основу ADO.NET. В большей степени управление состоянием выполняется на уровне приложения ADO.NET в кэше локального приложения, известном как класс DataSet. В ADO.NET 2.0 управление состоянием было расширено с помощью асинхронного выполнения команд и использования множественных активных результирующих наборов данных (MARS).

В следующих разделах будут описаны объекты ADO.NET как результат естественной эволюции объектов ADO, а также отмечены новые функции, появившиеся в версии ADO.NET 2.0. Другими словами, при рассмотрении концепций ADO.NET дискуссия будет построена на основе информации об ADO, представленной ранее в этой главе. ADO.NET представляет собой управляемую объектную модель с функциональными возможностями, приближенными к классической модели ADO, но позволяющими создавать более масштабируемые приложения, в частности, в изолированной среде, которую можно встретить во многих приложениях, ориентированных на службы и Web-службы и использующих многоуровневую архитектуру и ASP.NET.

Объектная модель ADO.NET

Объектная модель ADO.NET отличается от той, которая использовалась в ADO. Эта модель более сложная, хотя, несомненно, и более мощная.

Наиболее разительным отличием явилось введение класса кэша данных в памяти, называемого DataSet. Этот объект ADO.NET можно разделить на два компонента: собственно набор данных и поставщик данных. DataSet является специальным объектом, содержащим одну или несколько таблиц. Данные в объект DataSet извлекаются из источника данных с помощью поставщика и сохраняются в рабочей области приложения. Этими данными можно манипулировать непосредственно в приложении. DataSet является подмножеством источника данных, определенного в свойствах поставщика. Среди свойств поставщика следующие: Connection, Command, DataReader и DataAdapter. Каждый из этих объектов также имеет возможности, не существовавшие в объекте поставщика модели ADO. Например, объект DataAdapter может обслуживать больше одного подключения и набора правил. Как и во многих других управляемых объектах, для доступа из кода программы к различным объектам, содержащимся в основных объектах, используются перечисления.

?               Поставщик данных. Содержит классы, создающие подключение, выполняющие команды, обслуживающие объект чтения данных и обеспечивающие поддержку адаптера данных. Объект Connection поддерживает канал к базе данных. Объект Command позволяет клиенту запрашивать информацию из базы через адаптер данных. В дополнение к обеспечению доступа к данным объект адаптера позволяет клиентскому кэшу синхронизироваться с источником данных и обновлять его. Объект DataReader является односторонним (т.е. обеспечивающим только чтение данных) каналом связи с базой данных в модели ADO. В то же время объект DataAdapter обеспечивает поддержку соединения в реальном времени, т.е. двусторонний обмен данными.

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

В табл. 30.3 представлен обзор наиболее часто используемых классов данных ADO.NET.

Таблица 30.3. Обзор классов ADO.NET 2.0

Тип класса

Описание

Connection

Создает физическое соединение между СУБД и объектом DataAdapter, DataReader ИЛИ factory

ProviderFactory Новый класс AD0.NET 2.0. Каждый поставщик .NET реализует класс

ProviderFactory, который управляется из общего базового класса DBProviderFactory. Класс factory содержит методы создания специфичных для поставщика компонентов AD0.NET. Идея, заложенная в этом классе, позволяет разработчику написать обобщенный программный код, который использует поставщика, определяемого в ходе выполнения программы. Возможные поставщики, которые могут использоваться, хранятся в файле machine. conf ig

Command

Определяет действие, выполняемое в СУБД, например вставку, обновление или удаление строки. Класс DataAdapter содержит объекты команд, необходимых для выполнения запросов к базе данных, а также удаления, вставки и редактирования ее записей

Parameter

Параметр команды

Error

Информация об ошибке или предупреждении, возвращенном из базы данных.

В SQL Server эта информация содержит номер и текст ошибки, а также ее частоту

Exception

Исключение приложения, генерируемое, когда AD0.NET 2.0 встречает ошибку. Класс Error создается классом Exception. Класс Exception используется в AD0.NET 2.0 для обработки ошибок в выражениях try… catch

DataAdapter

Преобразует данные из источника данных поставщика в находящийся в памяти объект DataSet ИЛИ DataReader. Класс DataAdapter выполняет все запросы, преобразования данных из одного формата в другой, а также отображение таблиц. Один объект DataAdapter может поддерживать одно отношение базы данных. В результате коллекция может иметь любой уровень сложности. DataAdapter также отвечает за отправку запросов на новые подключения и закрытие подключений после получения данных

DataReader

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

DataSet

Содержит локальную копию данных, извлеченных одним или несколькими объектами DataAdapter. Объект DataSet использует локальную копию данных, так что подключение к базе данных не обслуживается в реальном времени. Пользователь может внести все изменения в локальную копию, а затем приложение затребует обновление. (Обновления могут выполняться в пакетном режиме или по одной записи за проход.) Объект DataSet поддерживает информацию как об исходном, так и о текущем состоянии каждой модифицированной строки. Если исходная строка данных соответствует находящейся в базе данных, то объект DataAdapter выполняет затребованное обновление; в противном случае DataAdapter возвращает ошибку, которую приложение должно обработать. Наборы данных DataSet в ADO.NET 2.0 могут быть типизированными и нетипизированными. Объекты DataSet определяются в пространстве имен System.Data, они не специфичны для конкретного поставщика. С поставщиком ассоциированы только классы DataAdapter.

Тип класса

Описание

Transaction

Это новый класс AD0.NET 2.0. Объект транзакции AD0.NET по умолчанию является обычным контейнером, работающим с одним источником данных. Если код ADO затребует в транзакции другой источник данных, транзакция будет незаметно преобразована в распределенную или многоэтапную, не требуя от разработчика дополнительного программирования

Visual Studio 2005 предлагает разработчику класс TableAdapter — набор дан- Назаметку ных одной таблицы, который можно использовать в приложении, подобно объекту DataSet ADO.NET 2.0. Если работа выполняется с одной таблицей, то класс TableAdapter существенно легче программировать, чем используемые им компоненты ADO.NET 2.0. Класс TableAdapter не управляется из класса System.Data.DataSet, как все остальные наборы данных. Более того, класс TableAdapter даже не является составным компонентом среды .NET Framework. Он находится на уровне абстракции, поддерживаемом программой Visual Studio 2005. Все объекты TableAdapter наследуют из класса System. Component. Component Model. Это значит, что данные объекты полностью интегрированы с инструментами Visual Studio, такими как Data Grid. К тому же базовым классом для TableAdapter может служить любой из поставщиков .NET, оснащенный классом DataTable. Базовый класс задается при создании объекта TableAdapter. Класс TableAdapter защищает типы и содержит все свойства и методы, необходимые для подключения к источнику данных, извлечения информации из таблицы и обновления источника данных. Более подробную информацию о классе TableAdapter вы сможете найти на сайте MSDN в статье “TableAdapters in Visual Studio 2005”:

http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/dnvs05/html/tableadapters.asp

Управляемые поставщики

В ADO.NET 2.0 содержится четыре управляемых поставщика.

?               OracleClient. Поставщик от Microsoft для баз данных Oracle. Этот поставщик требует установки на компьютере клиента СУБД Oracle.

?               OleDb. Связующий поставщик для использования поставщиков OLE DB в ADO.NET.

?               SqlClient. Поставщик от Microsoft для SQL Servber 7.0 и более поздних версий. Точно так же как поставщик OLE DB напрямую связывает SQL Server и ADO, SQLClient использует закрытый протокол для прямого подключения к SQL Server из ADO.NET.

?               SqlServerCe. Поставщик от Microsoft для СУБД SQL Server СЕ Mobile Edition.

Как уже говорилось ранее, поставщик OracleClient требует наличия установленного клиента СУБД Oracle. Поставщик OleDB .NET для обеспечения тех же функций полагается на компоненты MDAC. SqlClient и SqlServerCe содержатся в библиотеке SQL Native Client.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии