Pregunta

Recibo el siguiente error;

" Ya hay un DataReader abierto asociado con este comando que debe cerrarse primero. "

es porque he usado el lector en foreach loop? ¿O cuál podría ser el problema? Saludos BK

foreach( Apple a in listApple )
{


....
                   using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
                    {
                        while (reader.Read())
                        {
                            a.blablabla += reader.GetInt32("BLA_BLA_BLA"); 
                        }
                    }


.....

}
¿Fue útil?

Solución

Prueba lo siguiente:

using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
 {
  while (reader.Read())
  {
   a.blablabla += reader.GetInt32("BLA_BLA_BLA"); 
  }
  reader.Close();
 }

Otros consejos

¿Ha implementado SmartSqlReader para que se cierre cuando se elimine? Los lectores de datos regulares implementan la interfaz IDisposable y llaman a Cerrar desde el método de Disposición.

Si no lo cierra correctamente, mantendrá el objeto Comando ocupado hasta que el recolector de basura encuentre el lector y lo limpie.

Agregue reader.Close () para cerrar el SmartSqlReader

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top