ADO.NET

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 91.204.108.110 (обсуждение) в 19:35, 2 декабря 2014. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

ADO.NET — технология, предоставляющая доступ к данным для приложений, основанных на Microsoft .NET. Является не развитием более ранней технологии ADO, а самостоятельной технологией, частью фреймворка .NET.В отличие от классической ADO, которая была в основном предназначена для тесно связанных клиент-серверных систем, ADO.NET больше нацелена на автономную работу с помощью объектов DataSet. Эти типы представляют локальные копии любого количества взаимосвязанных таблиц данных, каждая из которых содержит набор строк и столбцов. Объекты DataSet позволяют вызывающей сборке (наподобие веб-страницы или программы, выполняющейся на настольном компьютере) работать с содержимым DataSet, изменять его, не требуя подключения к источнику данных, и отправлять обратно блоки измененных данных для обработки с помощью соответствующего адаптера данных.Но, пожалуй, самое фундаментальное различие между классической ADO и ADO.NET сострит в том, что ADO.NET является управляемой кодовой библиотекой, и, значит, подчиняется тем же правилам, что и любая управляемая библиотека. Типы, составляющие ADO.NET, используют протокол управления памятью CLR, принадлежат к той же системе типов (классы, интерфейсы, перечисления, структуры и делегаты), и доступ к ним возможен с помощью любого языка .NET. Классы ADO.NET находятся в сборке System.Data.dll.

Поставщики данных

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

Подключаемый уровень

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

  • Создание, настройка и открытие объекта подключения.
  • Создание и настройка объекта команды, указывающего объект подключения в аргументе

конструктора или через свойство Connection.

  • Вызов метода ExecuteReader () настроенного объекта команды.
  • Обработка каждой записи с помощью метода Read() объекта чтения данных.

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

Автономный уровень

ADO.NET можно работать и в автономном режиме.Автономные типы позволяют эмулировать реляционные данные с помощью модели объектов, находящихся в памяти. Кроме простого моделирования табличных данных, состоящих из строк и столбцов, типы из System.Data позволяют воспроизводить отношения между таблицами, ограничения столбцов, первичные ключи, представления и другие примитивы баз данных. К смоделированным данным можно применять фильтры, отправлять запросы и сохранять (или загружать) данные в формате XML и двоичном формате. Автономные типы действительно можно использовать без подключения к базе данных, но все-таки обычно применяются подключения и объекты команд. Кроме того, используется и особый объект — адаптер данных (расширяющий абстрактный тип Db Data Adapter), который как раз поставляет и обновляет данные. Но в отличие от подключенного уровня, данные, полученные через адаптер данных, не обрабатываются с помощью объектов чтения данных. Вместо этого объекты адаптеров пересылают данные между вызывающим процессом и источником данных с помощью объектов DataSet. Объекты чтения данных удобны, если нужно быстро просмотреть большой объем данных без необходимости представлять их в памяти. Например, если запросить из таблицы 20 000 записей, чтобы сохранить их в текстовом файле, то хранение этой информации в DataSet будет излишней затратой памяти (ведь DataSet полностью хранит результат запроса в памяти).Гораздо лучше создать объект чтения данных, который будет максимально быстро выдавать по одной записи.

Entity Framework

При использовании подключенного и автономного уровней ADO.NET всегда приходится помнить о физической структуре лежащей в основе базы данных. Необходимо знать схему каждой таблицы данных, писать сложные SQL-запросы для взаимодействия с данными таблиц и т.д. Это вынуждает писать довольно громоздкий код С#, поскольку С# существенно отличается от языка самой базы данных. Цель Entity Framework заключается в том, чтобы предоставить возможность взаимодействия с реляционными базами данных через объектную модель, которая отображается непосредственно на бизнес-объекты приложения. Например, вместо трактовки пакета данных как коллекции строк и столбцов можно оперировать коллекцией строго типизированных объектов, именуемых сущностями (entities). Сущности(еntities) — это концептуальная модель физической базы данных, которая отображается на предметную область. Формально говоря, эта модель называется моделью сущностных данных (Entity Data Model — EDM). Модель EDM представляет собой набор классов клиентской стороны, которые отображаются на физическую базу данных. Тем не менее, нужно понимать, что сущности вовсе не обязаны напрямую отображаться на схему базы данных, как может показаться, исходя из на звания. Сущностные классы можно реструктурировать для соответствия существующим потребностям, и исполняющая среда EF отобразит эти уникальные имена на корректную схему базы данных.

Литература

  • Сахил Малик. Microsoft ADO.NET 2.0 для профессионалов = Pro ADO.NET 2.0. — М.: «Вильямс», 2006. — С. 560. — ISBN 1-59059-512-2.
  • Эндрю Троелсен. Язык Программирования С#2010 и платформа .NET 4.0 = PRO C# 2010 AND THE .NET 4 PLATFORM. — 5-е издание. — Москва • Санкт-Петербург • Киев: «Вильямс», 2011. — С. 1392. — ISBN 978-5-8459-1682-2.

Ссылки

Шаблон:Windows API Шаблон:Microsoft APIs