I tilfælde af at udføre en grundlæggende forespørgsel, kan den kan arbejde på den måde (det er bestemt muligt) - dog i tilfælde af at forespørge en nøgen tabel
Re closed:det afhænger også af;p Hvis nogen bruger foreach
, så ja:siden foreach
disponerer eksplicit iteratoren via endelig
. Imidlertid! Det er ikke garanteret, hvis nogen f.eks. gør det (meget fræk og slap):
var iter = yourData.GetEnumerator();
if(iter.MoveNext()) {
Console.WriteLine(iter.Current.Name); // first record of, say, 20
}
// and don't dispose the iterator == bad
da iteratoren ikke a:bliver kasseret, b:udstøder sig selv og c:ikke går ned, vil den ikke lukke korrekt (enhver af disse 3 tilstande vil luk den ordentligt). Understregning:dette er et patologisk tilfælde:normalt er det rimeligt sikkert at sige "det vil lukke, ja".
Hvis du vil have garanteret ikke-buffering, skal du bemærke, at "dapper" har det, hvis du indstiller buffer
til false
:
IEnumerable<Customer> customers = connection.Query<Customer>(
"select * from Customer", buffered: false);
(det kan også håndtere parametre osv.)