基本的なクエリを実行する場合は、できます。 そのように動作します(確かに可能です)-ただし、裸の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
を設定すると、「dapper」にそれがあることに注意してください。 false
に :
IEnumerable<Customer> customers = connection.Query<Customer>(
"select * from Customer", buffered: false);
(パラメータなども処理できます)