今天用xormplus对数据进行查询,因为查询量有些大,发现其实xorm/xormplus是支持缓存的,因此添加了默认的缓存,即 `MemoryCacher`。
但在使用中发现了个很奇怪的问题。在我的方法里会将返回的模型Content进行一些循环文字append的操作。输出的结果会随着页面刷新不停地叠加。
在日志中发现了问题所在,其实是因为在我循环的方法中使用的是指针,而查询器缓存的结果也是这个指针,就导致了每次修改都会修改内存中的地址所对应的模型。
知道了问题,解决也很简单,在循环方法中将模型赋值给一个新的变量,修改相关操作在新的变量上。
其实更好的方法是直接参数传参不要用指针,不过因为要改动的太多了,懒得弄。