Я читал статью в MSDN несколько месяцев назад и недавно начал использовать следующий фрагмент кода для выполнения кода ADO.NET, но я чувствую, что это может быть плохо. Должен ли я реагировать или это вполне приемлемо?ADO.NET - плохая практика?
private void Execute(Action<SqlConnection> action)
{
SqlConnection conn = null;
try {
conn = new SqlConnection(ConnectionString);
conn.Open();
action.Invoke(conn);
} finally {
if (conn != null && conn.State == ConnectionState.Open) {
try {
conn.Close();
} catch {
}
}
}
}
public bool GetSomethingById() {
SomeThing aSomething = null
bool valid = false;
Execute(conn =>
{
using (SqlCommand cmd = conn.CreateCommand()) {
cmd.CommandText = ....
...
SqlDataReader reader = cmd.ExecuteReader();
...
aSomething = new SomeThing(Convert.ToString(reader["aDbField"]));
}
});
return aSomething;
}
Что делает это, что инструкция 'using' еще не выполняется, за исключением передачи в строке соединения для вас? –