Tengo un método ("GetDataReader", vamos a llamarlo) que devuelve un SqlDataReader. Está dentro de una clase Singleton DataFactory que mantiene una conexión persistente con la base de datos.¿Cómo puedo "separar" un SqlDataReader de su objeto SqlConnection?
El problema con esto es que después de ser devuelto, el DataReader todavía está "conectado" al objeto Connection en mi DataFactory. Por lo tanto, tengo que asegurarse de que el código que llama GetDataReader continuación, llama a Close() en el DataReader que regresa, si no, "bloquea" la conexión con esto:
ya hay un DataReader abierto asociado con este Comando que debe cerrarse primero.
¿Cómo puedo "separar" el DataReader antes de volver a enviarlo desde GetDataReader? ¿O eso, o clonarlo y devolver el clon? No quiero tener que hacer que el código de llamada siempre lo cierre de manera explícita.
Tiene que haber una mejor práctica aquí.
Actualización:
Gracias a todos por sus comentarios. La conclusión es que necesito perder el hábito de usar DataReaders y cambiar a DataTables. Son mucho más manejables.
Además, gracias por la nota sobre la agrupación de conexiones. Lo sabía, pero no me puse dos ni dos y me di cuenta de que estaba reinventando la rueda.
I * tengo * dejar de usar DataReaders ... – Deane