SQLDataReader не читает вторую таблицу, возвращенную хранимой процедурой - PullRequest
1 голос
/ 10 января 2020

Я использую приведенный ниже код для чтения и заполнения двух C# объектов, используя datareader. Но я не могу прочитать вторую таблицу.

using (var myConnection = new SqlConnection(ConnectionString))
{
     var sqlCommand = "usp_GetFileListforPurging";
     var cmd = new SqlCommand(sqlCommand, myConnection) { CommandType = CommandType.StoredProcedure };
     cmd.CommandTimeout = Timeout == 0 ? 30 : Timeout * 30;
     myConnection.Open();
     using (var reader = cmd.ExecuteReader())
     {
          _tableAllSet.Load(reader); //read's the first table
          reader.NextResult(); //But this is returning false, although my SP is returning two tables
          _tableTrueSet.Load(reader);
     }
     myConnection.Close();
}

Ниже приведен фрагмент данных, возвращаемых SP

enter image description here

1 Ответ

2 голосов
/ 10 января 2020

DataTable.Load уже прогрессирует читателю, в конце - по существу:

        if (!reader.IsClosed && !reader.NextResult())
        {
            reader.Close();
        }

( цитата из справочного источника )

Итак: не звоните NextResult самостоятельно при использовании Load, поскольку это приведет к пропуску второй сетки.

...