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