【发布时间】:2012-09-23 17:35:04
【问题描述】:
Dapper dot net 有一个buffer 参数(一个布尔值),但据我所知,它所做的唯一 事情是将结果转换为列表,然后再返回。
Dapper 的默认行为是执行你的 sql 并缓冲整个 读者返回。这在大多数情况下是理想的,因为它可以最大限度地减少共享 锁定数据库并减少数据库网络时间。
但是,在执行大型查询时,您可能需要最小化内存 足迹并仅根据需要加载对象。为此通过,缓冲: false 进入 Query 方法。
我不确定将结果转换为列表如何实现这一点。我错过了什么吗?我唯一的想法是它应该将ExecuteReader 的CommandBehavior 设置为CommandBehavior.SequentialAccess(但它没有)。
【问题讨论】:
-
Explanation of dapper buffer/cache 的副本,@Marc 的回答稍长、详细(尽管不可否认,实际上是在这个问题之后提出的)。
-
@Groo,如果在这个问题之后问了另一个问题,那么 other 问题是重复的,而不是这个问题。
标签: .net sqldatareader dapper