Esto es algo más curiosidad que un propósito real. Si tiene un SqlConnection
abierto y adjunta un SqlDataReader
, y luego intenta ejecutar otra consulta utilizando el mismo SqlConnection
, arrojará un error. Mi pregunta es cómo sabe el SqlConnection
que un lector está conectado a él. No hay una propiedad pública ni nada por el , entonces, ¿cómo sabe la clase SqlConnection
?¿Cómo saber si una SqlConnection tiene un SqlDataReader adjunto?
pregunta original: (que ya no es relevante)
Hola, Soy la creación de una pequeña cosa para la agrupación de conexiones y el de los errores más comunes que tenemos producirse (siempre es una solución fácil, pero no podemos recordar reader.Close()
!) es cuando tenemos una conexión que es utilizada por muchas clases/métodos y un método abre un lector de datos y se olvida de cerrarlo. Esto no es realmente malo porque muchas veces todo lo que tienes que hacer es entrar en el depurador y subir un nivel y ver la función antes y verificar si tiene un lector de datos no cerrado.
Ahora, aquí está el problema más grande. En este conjunto de conexiones, si un lector de datos está abierto, no se conoce hasta que un hilo obtiene una conexión e intenta usarlo y lo que originalmente abrió el lector de datos puede que ya no esté vivo.
Así que, simplemente, ¿cómo se puede detectar si un lector de datos está abierto en una conexión y hay alguna manera de cerrar el lector sin cerrar la conexión?
Solo para comprobar: no está intentando escribir su propio mecanismo de agrupación de conexiones ¿verdad? La agrupación de conexiones ya se maneja bajo las cubiertas del marco; no necesita hacer nada al respecto usted mismo. –
Guau .. De hecho, no sabía que proporcionaba la agrupación de conexiones ... Supongo que es tan implícito y tan poco que tienes que hacer para habilitarlo que me lo perdí ... esta pregunta ya no es relevante. – Earlz
@earlz - ¡todo es mejor! Vea esto para detalles: http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx. –