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