xorm 缓存的问题

今天用xormplus对数据进行查询,因为查询量有些大,发现其实xorm/xormplus是支持缓存的,因此添加了默认的缓存,即 `MemoryCacher`。

但在使用中发现了个很奇怪的问题。在我的方法里会将返回的模型Content进行一些循环文字append的操作。输出的结果会随着页面刷新不停地叠加。

在日志中发现了问题所在,其实是因为在我循环的方法中使用的是指针,而查询器缓存的结果也是这个指针,就导致了每次修改都会修改内存中的地址所对应的模型。

知道了问题,解决也很简单,在循环方法中将模型赋值给一个新的变量,修改相关操作在新的变量上。

其实更好的方法是直接参数传参不要用指针,不过因为要改动的太多了,懒得弄。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据