Dalam hal menjalankan kueri dasar, itu bisa bekerja seperti itu (tentu saja mungkin) - namun, dalam hal menanyakan Table<T>
telanjang , itu mungkin jadilah itu semua buffer dulu; Anda mungkin dapat mencoba menanyakan hitungan selama iterasi, atau menjalankan pelacakan. Dalam hal ini saya mencurigai itu akan buffer dulu.
Ditutup kembali:itu juga tergantung;p Jika seseorang menggunakan foreach
, maka ya:sejak foreach
secara eksplisit membuang iterator melalui finally
. Namun! Tidak dijamin jika seseorang melakukannya, misalnya (sangat nakal dan lemah):
var iter = yourData.GetEnumerator();
if(iter.MoveNext()) {
Console.WriteLine(iter.Current.Name); // first record of, say, 20
}
// and don't dispose the iterator == bad
maka karena iterator tidak a:dibuang, b:buang sendiri, dan c:tidak mogok, iterator tidak akan dimatikan dengan benar (salah satu dari 3 kondisi tersebut akan tutup dengan benar). Penekanan:ini adalah kasus patologis:biasanya cukup aman untuk mengatakan "akan ditutup, ya".
Jika Anda ingin jaminan non-buffering, perhatikan bahwa "dapper" memilikinya, jika Anda menyetel buffered
menjadi false
:
IEnumerable<Customer> customers = connection.Query<Customer>(
"select * from Customer", buffered: false);
(juga dapat menangani parameter dll)