そこで、開発中のフレームワークのバグを修正しました。擬似擬似コードは次のようになります。
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 を変更すると、参照されているキャッシュされたオブジェクトも変更され、データベースに保存されなくなります。キャッシュされたバージョンからオブジェクトを複製し、参照を切断して、新しいオブジェクトをキャッシュされたオブジェクトと比較できるようにすることで、これを修正しました。
私の質問は、これを行うためのより良い方法、推奨できるパターンはありますか? 以前にこれを行ったのは私だけではありません:)