Mi chiedevo se fosse possibile aggiungere un evento ad un oggetto SqlDataReader.
Sto creando una classe che gestisce connessioni e roba varia, l'idea è quella di eseguire query (select e non) senza mantere aperto il collegamento con il database.
Per le query di aggiornamento il problema non si pone, perché chiamo una funzione che esegue la query e poi chiude la connessione.
Per le select invece il problema c'è, la funzione che chiamo restituisce un SqlDataReader.
Tale oggetto ritornato non è la copia di quello prodotto dalla funzione ma è proprio quello (C# ci gioca parecchio con i riferimenti).
Fintanto che questo oggetto è aperto non posso chiudere la connessione al db, ma una volta che l'oggetto è stato ritornato posso chiuderlo, ma non chiuderò automaticamente anche la connessione, che rimane nell'ambito della classe della funzione che restituisce l'SqlDataReader.
Ho fatto dei test ed ho appurato che nonostante io chiuda il DataReader all'esterno la connessione, all'interno dell'oggetto, rimane aperta.
Un oggetto SqlDataReader presenta solo Proprietà e Metodi, ma nessun Evento, se fosse possibile creare una classe che implementi SqlDataReader e che aggiunga l'evento StateChange, potrei gestire la situazione all'interno della classe in modo che al cambiamento dello stato possa chiudere la connessione a lui associata.
Avete suggerimenti?
Grazie