Итак, я просто исправил ошибку в рамках, которые я разрабатываю. Псевдо псевдокод выглядит следующим образом:
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 также изменило ссылочный кешированный объект, поэтому он никогда не будет возвращаться в базу данных. Я исправил его, клонировав объект с кешированной версии, отделив ссылку и позволив мне сравнить новый объект с кешированным.
Мой вопрос: есть лучший способ сделать это, какой-то шаблон, который вы могли бы порекомендовать? Я не могу быть единственным человеком, который сделал это раньше:)