Ho un metodo ("GetDataReader", chiamiamolo) che restituisce un SqlDataReader. È all'interno di una classe Singleton DataFactory che mantiene una connessione persistente al database.Come posso "staccare" SqlDataReader dal suo oggetto SqlConnection?
Il problema con questo è che dopo essere stato restituito, DataReader è ancora "connesso" all'oggetto Connection nel mio DataFactory. Così, ho per assicurarsi che il codice che chiama GetDataReader quindi chiama Close() sul DataReader che ritorna, altrimenti, si "aggancia" la connessione con questo:
C'è già un DataReader aperto associato con questo Comando che deve essere chiuso per primo.
Come posso "staccare" il DataReader prima di inviarlo indietro da GetDataReader? O quello, o clonarlo e rimandare il clone? Non voglio dover rendere il codice chiamante sempre esplicitamente chiuso.
Ci deve essere una buona pratica qui.
Aggiornamento:
Grazie a tutti per il vostro contributo. La linea di fondo è che ho bisogno di perdere l'abitudine di usare DataReader e passare a DataTable. Sono molto più gestibili.
Inoltre, grazie per la nota sul pool di connessioni. Lo sapevo, ma non ho messo insieme due e due e mi sono reso conto che stavo reinventando la ruota.
ho avuto * * di smettere di usare DataReaders ... – Deane