Mam metodę ("GetDataReader", nazwijmy to), która zwraca SqlDataReader. Jest wewnątrz klasy Singleton DataFactory, która utrzymuje stałe połączenie z bazą danych.Jak mogę "odłączyć" SqlDataReader od jego obiektu SqlConnection?
Problem z tym, że po zwrocie, DataReader jest nadal "podłączony" do obiektu Connection w moim DataFactory. Tak, muszę się upewnić, że kod, który wywołuje GetDataReader następnie wywołuje Close() na DataReader że wraca, Inaczej, „zamki” Połączenie z tego:
Jest już otwarty DataReader skojarzony z tym Polecenie, które należy najpierw zamknąć.
Jak mogę "odłączyć" DataReader przed odesłaniem go z GetDataReader? Albo to, sklonuj i odeślij klon? Nie chcę, aby kod wywołujący zawsze wyraźnie go zamykać.
Tu musi być najlepsza praktyka.
Aktualizacja:
Dzięki wszystkim za wkład. Najważniejsze jest to, że muszę stracić nawyk używania DataReaderów i przejść na DataTables. Są znacznie łatwiejsze w zarządzaniu.
Dziękuję również za uwagę na temat łączenia połączeń. Wiedziałem o tym, ale po prostu nie wstawiłem dwóch i dwóch razem i nie zdałem sobie sprawy, że ponownie wynajduję koło.
ja * * mam przestać używać DataReaders ... – Deane