Доступно ли свойство HasRows для iDataReader? - PullRequest
0 голосов
/ 04 января 2019

Я задаю вышеупомянутый вопрос, потому что я вижу что-то свойство 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!

enter image description here

Так можно ли легко получить свойство HasRows для IDataReader?Если это действительно существует?

1 Ответ

0 голосов
/ 29 марта 2019

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

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

...