मूल क्वेरी निष्पादित करने के मामले में, यह कर सकता है उस तरह से काम करें (निश्चित रूप से यह संभव है) - हालांकि, नग्न Table<T>
को क्वेरी करने के मामले में , यह हो सकता है हो कि यह सब पहले बफ़र्स; आप शायद पुनरावृत्ति के दौरान गिनती पूछने या ट्रेस चलाने का प्रयास कर सकते हैं। इस मामले में मुझे संदिग्ध यह पहले बफर करेगा।
पुन:बंद:यह भी निर्भर करता है;p यदि कोई foreach
. का उपयोग कर रहा है , तो हाँ:चूंकि foreach
finally
. के माध्यम से पुनरावर्तक को स्पष्ट रूप से निपटाता है . हालांकि! अगर कोई ऐसा करता है तो इसकी गारंटी नहीं है, उदाहरण के लिए (बहुत शरारती और ढीला):
var iter = yourData.GetEnumerator();
if(iter.MoveNext()) {
Console.WriteLine(iter.Current.Name); // first record of, say, 20
}
// and don't dispose the iterator == bad
तब चूंकि पुनरावर्तक a:निपटारा नहीं करता है, b:स्वयं समाप्त हो जाता है, और c:क्रैश नहीं होता है, यह ठीक से बंद नहीं होगा (उन 3 स्थितियों में से कोई भी होगा इसे ठीक से बंद करें)। जोर:यह एक रोग संबंधी मामला है:आम तौर पर यह कहना सुरक्षित है कि "यह बंद हो जाएगा, हाँ"।
यदि आप गारंटीकृत गैर-बफ़रिंग चाहते हैं, तो ध्यान दें कि "डैपर" में वह है, यदि आप buffered
सेट करते हैं करने के लिए false
:
IEnumerable<Customer> customers = connection.Query<Customer>(
"select * from Customer", buffered: false);
(यह पैरामीटर आदि को भी संभाल सकता है)