我使用dapper将数据库中的对象作为IEnumerable返回。 默认的dapper将缓冲区设置设置为true。
这是如何运作的?
如果dapper缓存第一个查询,然后从内存中获取对象。
如果有人编辑/删除/添加表格中的行,会发生什么。必须再次为此查询重新缓存所有数据吗?
答案 0 :(得分:54)
缓冲区与缓存无关。 Dapper不包含任何类型的数据缓存(尽管它确实具有与其处理命令的方式相关的缓存,即“此命令字符串,具有此类参数,以及此类实体 - 具有这些关联的动态生成的方法来配置命令并填充对象“)。
这个开关的真正含义是:
false
:会在收到/消费时迭代项目 - 基本上是围绕IDataReader
的迭代器块
true
(默认值):在将数据交还给您之前,数据已完全消耗到List<T>
中
大多数查询只返回适量的数据(比如少于100条记录),因此我们很高兴默认(true
)为大多数情况提供最合适的行为。但我们为您提供了选项,以满足不同的使用场景。