Dapper dot net 有一个buffer
参数(一个布尔值),但据我所知,它唯一要做的就是在返回结果之前将结果转换为列表。
根据文档:
Dapper 的默认行为是执行您的 sql 并在返回时缓冲整个阅读器。这在大多数情况下是理想的,因为它最大限度地减少了数据库中的共享锁并减少了数据库网络时间。
但是,在执行大量查询时,您可能需要最小化内存占用并仅根据需要加载对象。为此,将 buffered: false 传递到 Query 方法中。
我不确定将结果转换为列表如何实现这一点。我错过了什么吗?我唯一的想法是它应该为 to 设置CommandBehavior
(ExecuteReader
但CommandBehavior.SequentialAccess
它没有)。