Неверная попытка вызвать чтение, когда читатель закрыт на уровне базы данных - PullRequest
0 голосов
/ 04 мая 2020

Я написал метод в моем database layer, который будет использоваться другими верхними уровнями. Этот метод возвращает IDataReader, как показано ниже:

public IDataReader GetDataReader(string commandText, CommandType commandType, IDbDataParameter[] parameters)
{
     IDataReader reader = null;

     using (var connection = _database.GetConnection())   //either opens new or uses existing connection if exist
     {
           using (var command = _database.GetCommand(commandText, connection, commandType))
           {
               {
                   if (parameters != null)
                   {
                        foreach (var parameter in parameters)
                        {
                            command.Parameters.Add(parameter);
                        }
                   }
                   reader = command.ExecuteReader();
                   return reader;
                }
           }
     }
}

Теперь, когда я хочу использовать этот метод в другом месте, и когда он достигает значения while (reader.Read()), он выдал мне ошибку.

private void GetResult()
{
    var query = "SELECT * FROM MyTable";
    var reader = Context.GetDataReader(query, CommandType.Text, null);

    while (reader.Read())
    {
         //...
    }
}

Ошибка:

'Invalid attempt to call Read when reader is closed.'

Что я могу сделать, чтобы исправить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...