SqlConnection
, SqlCommand
и SqlDataReader
все реализуют интерфейс IDisposable
. Я прочитал о лучшей практике, чтобы всегда заключать IDisposables
в блок using
.
Итак, мой общий сценарий для запроса данных будет выглядеть примерно так (в лучшем случае, конечно, инструмент сопоставления, такой как linq2sql, был бы подходящим, но просто предположим, что мы хотим использовать этот подход здесь):
using (SqlConnection cn = new SqlConnection("myConnectionstring"))
{
using (SqlCommand cm = new SqlCommand("myQuery", cn))
{
// maybe add sql parameters
using (SqlDataReader reader = cm.ExecuteReader())
{
// read values from reader object
return myReadValues;
}
}
}
Правильно ли это или можно считать излишним? Я немного не уверен в этом уровне вложенных блоков using
, но, конечно, я хочу сделать это правильно.
Спасибо!