Можно ли дипозировать DbCommand перед итерацией DbDataReader

У меня есть простое приложение, которому нужно выполнить определенные запросы, чтобы получить информацию о схеме базы данных. Я написал простой метод, который выполняет запрос и возвращает читателя, что-то вроде этого -

public static DbDataReader ExecuteQuery(DbConnection connection,string sql)
{
   DbCommand command = connection.CreateCommand();
   command.CommandText = sql;

   using(command)
   {
      return command.ExecuteReader();    
   }
}

Вызывающий код закрывает соединение и утилизирует читателя и соединение соответствующим образом.

Мой вопрос - нормально ли/правильно ли утилизировать экземпляр команды (как это делается через блок using) перед итерацией ридера? Я не ожидаю, что какие-либо параметры OUT будут заполнены после закрытия ридера. Есть ли у ADO.NET API какие-либо строгие правила на этот счет?

6
задан alwayslearning 21 October 2011 в 07:05
поделиться