ADO.NET

ADO.NET (ActiveX Data Object для .NET) — технология, предоставляющая доступ к данным и управление ими, хранящимися в базе данных или других источниках (Microsoft SQL Server, Microsoft Access, Microsoft Excel, Microsoft Outlook, Microsoft Exchange, Oracle, OLE DB, ODBC, XML, текстовые файлы), основанных на платформе .NET Framework и входящая в состав .NET Framework 2.0, представляет собой набор библиотек. В отличие от технологии ADO, которая была в основном предназначена для тесно связанных клиент-серверных систем, ADO.NET больше нацелена на автономную работу с помощью объектов DataSet. Объекты DataSet представляют локальные копии взаимосвязанных таблиц данных, каждая из которых содержит набор строк и столбцов. Объекты DataSet позволяют вызывающей сборке (наподобие веб-страницы или программы, выполняющейся на настольном компьютере) работать с содержимым DataSet, изменять его, не требуя подключения к источнику данных, и отправлять обратно блоки измененных данных для обработки с помощью соответствующего адаптера данных. Но, пожалуй, самое фундаментальное различие между классической ADO и ADO.NET состоит в том, что ADO.NET является управляемой кодовой библиотекой, и, значит, подчиняется тем же правилам, что и любая управляемая библиотека. Типы, составляющие ADO.NET, используют протокол управления памятью CLR, принадлежат к той же системе типов (классы, интерфейсы, перечисления, структуры и делегаты), и доступ к ним возможен с помощью любого языка .NET. Классы ADO.NET находятся в сборке System.Data.dll.

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

Подключаемый уровень 
На данном уровне работа с базами данных ведётся через объекты подключения, объекты чтения данных и поставщика данных предназначенного для нужной СУБД. Для получения данных выполняются следующие шаги.
 Создание, настройка и открытие объекта подключения. 
 Создание и настройка объекта команды, указывающего объект подключения в аргументе конструктора или через свойство Connection.
 Вызов метода ExecuteReader () настроенного объекта команды. 
 Обработка каждой записи с помощью метода Read () объекта чтения данных.
Объекты чтения данных предоставляют поток данных, для чтения в прямом направлении. Чтение происходит каждый раз по одной записи. Следовательно объекты чтения обрабатывают только select запросы. Открытие и закрытие подключения к БД полностью возлагается на программиста.

Автономный уровень 
Автономный уровень ADO.NET позволяет отображать реляционные данные с помощью модели объектов в память. Типы данных из System.Data воспроизводят не только отображение строк и столбцов, а также отношения между таблицами, первичные ключи и т. д. Так как отображение данных происходит в память, подключение не занимает времени СУБД, подключаясь и отключаясь автоматически, при чтении и обновлении данных, автономный уровень снимает с программиста лишнюю работу. Но у данного уровня есть недостаток, представьте что требуется считать из базы данных 20000 записей, и при использовании автономного уровня, все это ляжет в память приложения, не очень разумное использование, здесь на выручку приходит подключаемый уровень который считает все последовательно.

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

См. также 
 ADO
 .Net Framework
Entity Framework
 СУБД
 Microsoft SQL Server
 Oracle Database
 Реляционная база данных

Примечания

Литература

Ссылки 
 Раздел ADO.NET  в библиотеке MSDN.

Интерфейсы доступа к данным
.NET