xorm 缓存的问题

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

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

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

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

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