Юзаю EnterpriseLibrary от Microsoft-а.
возник спор: какой код более корректен:
Database db = .....
DBCommandWrapper cmd = db.GetStoredProcCommandWrapper(....);
cmd.AddInParameter(......);
.......
DataSet ds = db.ExecuteDataSet(cmd);
или
Database db = .....
using(DBCommandWrapper cmd = db.GetStoredProcCommandWrapper(...)
{
cmd.AddInParameter(......);
.......
DataSet ds = db.ExecuteDataSet(cmd);
}
Я считаю что 2-й вариант корректней.
Аргументы:
1. запрос может занимать значительные ресурсы как на клиенте так и на сервере. Когда их освободит сборщик мусора — никто не знает. Что может сказаться на быстродействии сервера в первую очередь.
2. Если кто-то реализовал интерфейс IDisposable — значит нада чего-то Dispose-ить.

Аргументы оппонента:
1. В EnterpriseLibrary уже все сдалано за нас и нефиг заморачиваться.
Рассудите