所以我只是修复了我正在开发的框架中的一个错误。伪伪代码如下所示:
myoldObject = new MyObject { someValue = "old value" };
cache.Insert("myObjectKey", myoldObject);
myNewObject = cache.Get("myObjectKey");
myNewObject.someValue = "new value";
if(myObject.someValue != cache.Get("myObjectKey").someValue)
myObject.SaveToDatabase();
因此,本质上,我从缓存中获取了一个对象,然后将原始对象与缓存对象进行比较,以查看是否需要将其保存到数据库中以防它发生更改。出现问题是因为原始对象是一个引用......所以更改 someValue 也更改了引用的缓存对象,所以它永远不会保存回数据库。我通过从缓存版本中克隆对象、切断引用并允许我将新对象与缓存对象进行比较来修复它。
我的问题是:有没有更好的方法来做到这一点,一些模式,你可以推荐?我不可能是唯一一个这样做过的人:)