Ошибка DbDataReader: неверная попытка вызова Read, когда читатель закрыт - PullRequest
3 голосов
/ 21 февраля 2012

Привет. Я пытаюсь вернуть DataReader из метода, но он возвращает закрытый объект DbDataReader. Любая идея, чтобы разобраться в этом вопросе. Я открыт для любых предложений по улучшению кода.

Спасибо

UPDATE Я не хочу оставлять соединение с базой данных открытым. Есть ли способ вернуть открытый DataReader после закрытия соединения.

internal DbDataReader ExecuteReader(SqlCommand command, CommandBehavior behavior, string connectionString)
  {
    DbDataReader dataReader = null;
    try
    {
      SqlConnection connection = GetConnection(connectionString);
      Open(connection);
      command.Connection = connection;
      command.CommandTimeout = 60;
      dataReader = command.ExecuteReader(behavior);
      Close(connection);
    }
    catch
    {
    }
    return dataReader;
}

1 Ответ

6 голосов
/ 21 февраля 2012

Он закрыт, потому что вы закрыли соединение с базой данных. Он не может читать данные из закрытого SqlConnection. Если вы хотите повторно использовать соединение, вы можете передать OPEN-соединение методу и закрыть соединение после того, как вы использовали данные из DbDataReader.

...