Где почитать информация по провайдерам данных?

Где можно подробнее почитать про провайдеры данных?
Какие вообще есть современные провайдеры данных к реляционным БД?
ODP.NET это надстройка над ADO.NET?
Слышал что есть управляемые и неуправляемые провайдеры данных, в чем отличие?

Интересуют, как общие вопросы в данном направлении, так и конкретные для oracle, но с возможностью перейти на другую БД.

P.S. второй день сижу в поисковике и как то не удовлетворен результатом, может не там ищу.
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
ODP.NET это надстройка над ADO.NET?

Ну у вас и каша в голове, неудивительно, что вы ничего не можете найти.

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

С момента появления дотнета как платформы ADO.NET был и остаётся основным способом доступа к реляционным БД из дотнет-приложений. В большинстве случаев нет причин НЕ пользоваться им. Стоит отметить, что хоть сейчас MS советует использовать ORM (с тех пор, как повзрослел Entity Framework) для доступа к данным, ADO.NET никуда не девался, т.к. все известные мне ORM-ми работают также через эти интерфейсы.

Провайдеров данных существует множество, и существование каждого из провайдеров определяется существованием конкретной СУБД. ODP.NET это не надстройка над ADO.NET, это реализация интерфейсов ADO.NET, способная взаимодействовать с Ораклом. Аналогичные провайдеры существуют и для других популярных СУБД, включая PostgreSQL, DB2, MySQL и даже SQLite. По сути доступность реляционной СУБД на дотнете определяется наличием работоспособного ADO.NET-провайдера.

Разумеется, конкретный провайдер может добавлять какой-то специфичный функционал, но при этом он должен реализовать все необходимые интерфейсы. Фишка ADO.NET в том, что реально написать такое приложение (разумеется, если пользоваться только стандартными SQL конструкциями), которое ВООБЩЕ не будет зависеть от конкретной СУБД вплоть до того, что нужного провайдера можно будет указывать в конфиг-файле.

Большинство интерфейсов и классов ADO.NET находятся в пространстве имён System.Data. Условно они делятся на собственно интерфейсы для доступа к БД (важнейшие из них: IDbConnection, IDbCommand, IDataReader) и классы-хелперы, в частности набор классов для организации простейшей in-memory базы данных внутри вашего приложения, которая будет служить кэшем для данных, взятых из основной БД (важнейшие классы: DataSet, DataTable).

Слышал что есть управляемые и неуправляемые провайдеры данных, в чем отличие?

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

Почитать об этом можно в любой нормальной книжке по дотнету. Если остались вопросы, пишите в комментарии.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы