dapperを使用して、データベースからオブジェクトをIEnumerableとして返します。デフォルトでは、dapperのバッファ設定はtrueに設定されています。
これはどのように作動しますか?
dapperが最初のクエリをキャッシュしてから、メモリからオブジェクトを取得する場合。
誰かがテーブルの行を編集/削除/追加するとどうなりますか。このクエリでは、dapperがすべてのデータを再度キャッシュする必要がありますか?
バッファはキャッシュとは無関係です。Dapper には、いかなる種類のデータ キャッシュも含まれていません (ただし、コマンドの処理方法に関連するキャッシュはあります。つまり、「このコマンド文字列、このタイプのパラメーター、およびこのタイプのエンティティーには、これらの関連付けられた動的に生成されたメソッドが設定されています。コマンドを実行し、オブジェクトを移入します」)。
このスイッチが実際に意味することは次のとおりです。
false
: アイテムが受信/消費されるたびに反復します。基本的には、IDataReader
true
(デフォルト): データは、ユーザーList<T>
に返される前に完全に消費されます。
ほとんどのクエリは中程度の量のデータ (たとえば、100 レコード未満) しか返さないためtrue
、ほとんどのシナリオでデフォルト ( ) が最も適切な動作を提供することを嬉しく思います。ただし、さまざまな使用シナリオに対応するために、オプションを利用できるようにしています。