Вы не можете успешно вызвать устройство чтения данных вне оператора using, так как для чтения данных требуется открытое соединение.
Соединение будет закрываться достаточно быстро, как у вас, и даже не «закроется».Он будет возвращен в пул соединений (при условии, что вы его используете).Поскольку это, вероятно, так, вам не нужно беспокоиться о том, как быстро соединение закрывается в этом контексте, так как другие части приложения, нуждающиеся в соединении, будут получать доступную из пула.Это предполагает, что у вас нет приложения с действительно высоким трафиком, это может стать важным в этом сценарии, но это много, много, много одновременных пользователей, и вы можете решить эту проблему, увеличив число подключений в пуле.,
Крис также поднял хорошую мысль: это должно быть в выражении использования:
SqlDataReader dr = cm.ExecuteReader();
while (dr.Read())
{
firstName = (string)dr["GivenName"];
lastName = (string)dr["sn"];;
}
dr.Close();
В этом случае, если ваш читатель выдает исключение, он никогда не получит1008 *, поэтому он останется открытым намного дольше, чем нужно (возможно, даже на весь срок службы приложения).
Считыватель данных