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

2.2 Три стороны технологии ado.Net

Библиотеки ADO.NET (.NET версии 3.5 и выше) можно применять тремя концептуально различными спосо­бами: в подключенном (связном) режиме, в автономном режиме и с помощью технологии Entity Framework. В .NET версии 2.0 используются лишь два первых способа взаимодействия.

При использовании подключенного уровня (connected layer), кодовая база явно подключается к соответствующему хранили­щу данных и отключается от него. При таком способе использования ADO.NET обычно происходит взаимодействие с хранилищем данных с помощью объектов подключения, объектов команд и объектов чтения данных.

Автономный уровень (disconnected layer), по­зволяет работать с набором объектов DataTable (содержащихся в объекте DataSet), который представляет на стороне клиента копию внешних данных. При получении DataSet с помощью соответствующего объекта адаптера данных подключение открывается и за­крывается автоматически. Понятно, что этот подход помогает быстро освобождать под­ключения для других вызовов и повышает масштабируемость систем.

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

После выпуска .NET 3.5 SP1 в ADO.NET появилась поддержка новой технологии (новой функции API), которая на­зывается Entity Framework (сокращенно EF). Технология EF показывает, что многие низ­коуровневые детали работы с базами данных скрыты от программиста и отрабатываются за него при генерации соответствующего LINQ-запроса. Технологию LINQ рассмотрим в конце изучения темы.

2.3 Пространство имен System.Data. С точки зрения программиста, тело ADO.NET состав­ляет базовая сборка с именем System.Data.dll. В этом двоичном файле находится зна­чительное количество типов, совместно используемых всеми поставщиками данных ADO.NET, независимо от лежащего в их основе типа хранилища данных. Прикладные программы, позволяющие пользователям совместно использовать данные, могут использовать ADO.NET для подключения к источникам данных, а также для поиска, управления, и модификации этих данных.

Итак, ADO.NET – это часть Microsoft .NET Framework, т.е. набор средств и слоев, позволяющих приложению легко управлять и взаимодействовать со своим файловым или серверным хранилищем данных:

15.Поставщики данных ado.Net. Поведение объектов подключения.

ADO.NET не предлагает единого набора типов для связи со всеми СУБД. Вместо этого в ADO.NET имеются различные поставщики данных (провайдеры данных – data provider), каждый из которых оптимизирован для взаимодействия с конкретной СУБД. Первая выгода этого подхода состоит в том, что можно запрограммировать особый поставщик данных для доступа к любым уникальным особенностям конкретной СУБД. Еще одна выгода — конкрет­ный поставщик данных может напрямую подключиться к механизму соответствующей СУБД, не пользуясь междууровневым слоем отображения.

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

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

В рамках .NET Framework поставляется набор поставщиков данных, например, поставщик в стиле Oracle, Microsoft SQL Server и OLE DB/ODBC (рис. 1):

Р исунок 1. – Уровни модели поставщиков данных

Поставщик SQL Server.NET Data Provider предоставляет оптимизированный доступ к базе данных Microsoft SQL Server (версии 7.0 и выше) и взаимодействует с ней напрямую по «родному» протоколу передачи данных SQL Server. Он расположен в пространстве имен System.Data.SqlClient. Поставщик OLE DB предоставляет доступ к любому источнику данных, который имеет драйвер OLE DB. Это включает базы данных SQL Server версий, предшествующих 7.0. Он расположен в пространстве имен System.Data.OleDb. Поставщик Oracle предоставляет оптимизированный доступ к базам данных Oracle (версии 8 и выше).

Примечание. Если ваше приложение работает с СУБД Microsoft Access, то следует подключить следующие директивы использования пространства имен:

using System.Data;

using System.Data.OleDb;

Если ваше приложение работает с СУБД Microsoft SQL Server, то следует подключить следующие директивы использования пространства имен:

using System.Data;

using System.Data.SqlClient;

При выборе поставщика сначала необходимо пытаться найти встроенный поставщик ADO.NET, который предназначен для имеющегося источника данных. Если таковой не найден, можно воспользоваться OLE DB при наличии драйвера OLE DB для источника данных.

Любой используемый поставщик данных определяет набор типов, обеспечивающих базовые функциональные возможности. Базовые объекты поставщика данных ADO.NET, их базовые классы определены в пространстве имен System.Data.Common:

Тип объекта

Базовый класс

Реализованные интерфейсы

Назначение

Connection

SqlConnection

DbConnection

OracleConnection

IDbConnection

Объект соединения.

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

Command

DbCommand

SqlCommand

IDbCommand

Объект команды.

Представляет SQL-запрос или хранимую процедуру. Кроме того, объекты команд предоставляют доступ к объекту чтения данных конкретного поставщика данных.

DataReader

DbDataReader

IDataReader,

IDataRecorder

Объект чтения данных.

Предоставляет однонаправленный доступ к данным только для чтения на стороне сервера.

DataAdapter

DbDataAdapter

SqlDataAdapter, OracleDataAdapter

IDataAdapter,

IDbDataAdapter

Объект адаптера данных.

Пересылает наборы данных из хранилища данных к вызывающему процессу и обратно. Адаптеры данных содержат подключение и набор из четырех внутренних объектов команд для выборки, вставки, изменения и удаления информации в хранилище данных.

Parameter

DbParameter

SqlParametrs

IDataParameter,

IDbDataParameter

Объект параметра.

Представляет именованный параметр в параметризованном запросе.

Transaction

DbTransaction

SqlTransaction

IDbTransaction

Объект транзакции.

Выполняет транзакцию базы данных.

Хотя имена соответствующих типов для разных поставщиков данных оказываются разными (например, DbDataAdapter, SqlDataAdapter, OracleDataAdapter), каждый из таких объектов получается из одного и того же базового класса, что предполагает идентичность работы с ними.