Red de conocimiento informático - Conocimiento informático - Un DataReader asociado con este comando ya está abierto y debe cerrarse primero.

Un DataReader asociado con este comando ya está abierto y debe cerrarse primero.

Cuando se abre un DataReader para su uso, una SqlConnection solo puede abrir un DataReader. Al abrir otro DataReader, el anterior debe cerrarse primero.

1. Cuando utiliza declaraciones de inserción o actualización de la base de datos, generalmente usa el método ExecuteNonQuery () de SqlCommand y define una conexión de base de datos pública. Generar una nueva conexión cada vez que realiza una consulta no causará este problema. pero ocupará muchos recursos de la base de datos.

2. En este caso, se generará internamente un objeto DataReader vacío. El DataReader no se liberará hasta que se cierre la conexión de la base de datos actual. Por lo tanto, se recomienda utilizar la palabra clave de uso, que puede ser. definido Todos los objetos dentro del alcance se liberan.

3. También puede configurar ConnectionString y agregar directamente la declaración MultipleActiveResultSets=true. Solo es aplicable a versiones posteriores a SQL 2005. Léalo primero y colóquelo en la Lista.

4. Después de cambiar al código siguiente, ToList se lee en la memoria y se desacopla del DataContext.