Я заметил странное поведение при работе с программой чтения данных mysql в С#. Когда я выполняю запрос, я получаю данные, и то же самое я вижу в моем объекте читателя. Однако во время отладки, когда я останавливаюсь здесь на секунду или миллисекунду, данные исчезают из считывателя, и он говорит: «Перечисление не дало результатов». Ниже мой код для того же самого. Я не могу найти решение для того же.
public async Task<bool> SelectAsync(MySqlCommand command)
{
DbDataReader reader;
try
{
MySqlCommand cmd = command;
command.Connection = _connection;
reader = await cmd.ExecuteReaderAsync();
while (reader.Read())
{
// extracting fields from reader object code goes here
}
reader.Close();
return true;
}
catch (Exception ex)
{
//error log
_errorMessage = $"{ex}";
return false;
}
}





Если вы расширяете любую коллекцию средств чтения, которая перечисляет данные из средства чтения данных во время отладки, метод Read автоматически вызывается для объекта средства чтения данных, и средство чтения переходит к следующей записи или к концу. Таким образом, вы не увидите записей, если он окажется в конце. Обратите внимание, что datareader становится пустым, когда вы достигаете конечной позиции объекта чтения.
Я бы порекомендовал вам не показывать какую-либо коллекцию результатов чтения во время отладки, чтобы решить эту проблему.
Если вы хотите увидеть состояние объекта в режиме отладки или WATCH; который будет заполнен вызовом БД, вы должны сначала материализовать это.