Что такое ADO.NET и как с его помощью обращаться к базе данных?
Начал разбираться с работой с БД в C#, везде встречается ADO.NET. Что это, как выглядит самый базовый запрос к базе через него и чем оно отличается от Entity Framework?
2 ответа
ADO.NET — это низкоуровневый набор классов в .NET для работы с базами данных: подключения, команды, чтение результатов. Это «фундамент», поверх которого построены ORM вроде Entity Framework.
Ключевые классы: SqlConnection (подключение), SqlCommand (запрос), SqlDataReader (чтение строк). Базовый пример выборки:
using System.Data.SqlClient;
using var connection = new SqlConnection(connectionString);
connection.Open();
using var command = new SqlCommand(
"SELECT Id, Name FROM Users WHERE Age > @age", connection);
command.Parameters.AddWithValue("@age", 18);
using var reader = command.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32(0);
string name = reader.GetString(1);
Console.WriteLine($"{id}: {name}");
}
Обратите внимание на @age — это параметризованный запрос. Всегда передавайте значения через параметры, а не склеивайте строку SQL руками — иначе получите SQL-инъекцию.
Отличие от Entity Framework: ADO.NET — ручная работа с SQL и ручное чтение колонок. EF — это ORM над тем же ADO.NET: он сам генерирует SQL и маппит строки на объекты C#. ADO.NET даёт максимальный контроль и скорость, EF — удобство и меньше рутины. Для большинства приложений берут EF, к чистому ADO.NET спускаются ради тонкой оптимизации горячих запросов.
Добавлю практический момент: пакет System.Data.SqlClient считается устаревшим, в новых проектах берите Microsoft.Data.SqlClient. API почти идентичный, но он активно развивается и лучше поддерживает свежие версии SQL Server и .NET.