Доступно ли свойство 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 в своем коде вместо интерфейса.