Доступно ли свойство HasRows для iDataReader?

Я задаю вышеуказанный вопрос, потому что я вижу что-то свойство HasRows в окне QuickWatch..

Я изменяю чужой код и должен следовать установленным шаблонам. Мне нужно запросить таблицу SQL Server для извлечения строки из таблицы конфигурации, и я решил сначала закодировать ее в тестовом консольном приложении. Я также решил использовать типы SQLClient и использовал свойство HasRows:

....
using (SqlDataReader rdr = cmd.ExecuteReader())
{
    if (rdr.HasRows)
    {
      ....

Когда я переместил код в другой проект, я заметил, что использовался IDataReader, и Intellisense сказал, что свойство HasRows недоступно, поэтому я использовал цикл while, хотя у меня есть только одна возвращаемая строка:

....
using (IDataReader rdr = cmd.ExecuteReader())
{
   while (rdr.Read())
   {
      ....

Однако когда я быстро просмотрел IDataReader rdr, я увидел свойство HasRows!

Таким образом, я могу легко добраться до свойства HasRows для IDataReader? Если это действительно существует?

0 ответов

Нет, ты не можешь. HasRows - это абстрактный метод DbDataReader, а у IDataReader его нет. Несмотря на то, что DbDataReader реализует IDataReader, он реализован внутри DbDataReader, а не в самом интерфейсе.

Используйте DbDataReader в своем коде вместо интерфейса.

Другие вопросы по тегам