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