Получение «Неправильная попытка вызова Read, когда читатель закрыт»

мы получили следующий код (здесь с псевдовалами для удобства чтения), где первое соединение возвращает много данных (тысячи строк). SqlDataReader читает их один за другимreader.Read() и затем открывает новое соединение, чтобы обновить каждую строку новыми значениями:

using (SqlConnection conn = new SqlConnection(connString))
    using (SqlCommand cmd = new SqlCommand("sp1", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@param1", param1);
        cmd.Connection.Open();
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                try
                {
                    string hash= utils.SHA256.Hashing((string)reader["firstRow"], saltValue);
                    using (SqlConnection conn2 = new SqlConnection(connString))
                    using (SqlCommand cmd2 = new SqlCommand("sp2", conn2))
                    {
                        cmd2.CommandType = CommandType.StoredProcedure;
                        cmd2.Parameters.AddWithValue("@param1", param1);
                        cmd2.Parameters.AddWithValue("@param2", param2);
                        cmd2.Connection.Open();
                        cmd2.ExecuteNonQuery();
                    }
                }
                catch (SqlException ex)
                {
                    //something
                }
            }
        }
    }

но выдает ошибку:

[InvalidOperationException: Invalid attempt to call Read when reader is closed.]
System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout) +640
System.Data.SqlClient.SqlDataReader.Read() +9

В среде разработки это работает нормально, но здесьВсего несколько сотен строк. Выдает ошибку немедленно, поэтому неПрямо не похоже на тайм-аут, но эй, я нене знаю ...

Ответы на вопрос(1)

Ваш ответ на вопрос