Легкий класс помощника ADO.NET
Может кто-нибудь указать мне на текущую библиотеку, которая обеспечивает базовую оболочку функциональности ADO.NET? Я ищу что-то в духе старого класса SqlHelper и не очень заинтересован в использовании блока приложения доступа к данным (так как это немного излишне для моих простых потребностей). Что каждый сейчас использует для работы с ADO.NET?
Обновить:
Должен отметить, что я уже работаю с ORM (Nhibernate); Я только что столкнулся с ситуацией, которая требует необработанных вызовов ADO.NET - поэтому нет необходимости предлагать использовать ORM вместо работы с ADO.NET
4 ответа
Я закончил с Fluent Ado.net для этого; отличная небольшая библиотека для выполнения простых внеполосных вещей ado.net, которые появляются время от времени.
Я написал свою собственную маленькую вспомогательную библиотеку (один файл.cs) здесь: https://github.com/jhgbrt/yadal/blob/master/Net.Code.ADONet.SingleFile/Db.cs
Вы можете найти несвязанную версию, тесты и readme здесь: https://github.com/jhgbrt/yadal
Дэн, это класс, который я создал за несколько лет. Я пользуюсь ADO.NET экстенсивно. Он поддерживает простые вещи, такие как Fill, NonQuery, Scalar, но также получает схему, транзакции, массовые вставки и многое другое.
DataAdapter (решение VisualStudio 2010)
Дайте мне знать, если вам понадобится дополнительная помощь с этим (примечание: я удалил некоторые ссылки на другие объекты, чтобы опубликовать это для вас, поэтому, если он не работает, просто дайте мне знать).
Надеюсь, что это полезно:
public static class DbHelper {
public static IDbCommand CreateCommand(this IDbConnection conn, string sql, params object[] args) {
if (!(conn is SqlConnection))
throw new NotSupportedException();
var command = (SqlCommand)conn.CreateCommand();
try {
var paramterNames = new List<string>(args.Length);
for (int i = 0; i < args.Length; i++) {
string name = "@p" + i;
command.Parameters.AddWithValue(name, args[i]);
paramterNames.Add(name);
}
command.CommandText = string.Format(sql, paramterNames.ToArray());
}
catch (Exception) {
if (command != null)
command.Dispose();
throw;
}
return command;
}
}