Недопустимая попытка вызвать Read, когда читатель закрыт при использовании dapper

При извлечении записей из таблицы с использованием среды dapper я получаю следующую ошибку

Неверная попытка вызвать Read, когда читатель закрыт

и ниже мой код

var sql = "SELECT * FROM LMS_QuestionCategory";
                var rows = new List<Dictionary<string, int>>();

                using (IDbConnection dbConnection = Connection)
                {
                    var reader = dbConnection.ExecuteReader(sql);

                    while (reader.Read())
                    {
                        var dict = new Dictionary<string, int>();

                        for (var i = 0; i < reader.FieldCount; i++)
                        {
                            dict[reader.GetName(i)] = reader.GetInt32(i);
                        }

                        rows.Add(dict);
                    }
                }

Почему я получаю эту ошибку?


person XamDev    schedule 27.03.2017    source источник


Ответы (2)


Вы должны открыть соединение:

using (IDbConnection dbConnection = Connection)
{
   dbConnection.Open() //<--open the connection
   var reader = dbConnection.ExecuteReader(sql);
    ...
person apomene    schedule 27.03.2017

В моем очень конкретном случае я использовал CommandDefinition для выбора, и он выдавал указанную ошибку:

CommandDefinition queryDefinition = _queryBuilder.UpdateQuery(_dbConn, _transaction, collectionName, item);

await QueryAsync<T>(CommandDefinition);

Я изменил его следующим образом, и это сработало:

await QueryAsync<T>("SELECT * FROM table_name",param,null,null, commandType : CommandType.Text);

Надеюсь, это кому-то поможет

person Henry Rodriguez    schedule 26.11.2017