Asp.Net Cache, modify an object from cache and it changes the cached value

Posted by Glen on Stack Overflow See other posts from Stack Overflow or by Glen
Published on 2010-05-08T05:48:27Z Indexed on 2010/05/08 5:58 UTC
Read the original article Hit count: 408

Filed under:
|

Hi, I'm having an issue when using the Asp.Net Cache functionality. I add an object to the Cache then at another time I get that object from the Cache, modify one of it's properties then save the changes to the database.

But, the next time I get the object from Cache it contains the changed values. So, when I modify the object it modifies the version which is contained in cache even though I haven't updated it in the Cache specifically. Does anyone know how I can get an object from the Cache which doesn't reference the cached version?

i.e.

Step 1:

Item item = new Item();
item.Title = "Test";
Cache.Insert("Test", item, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);

Step 2:

Item item = (Item)Cache.Get("test");
item.Title = "Test 1";

Step 3:

Item item = (Item)Cache.Get("test");
if(item.Title == "Test 1"){
    Response.Write("Object has been changed in the Cache.");
}

I realise that with the above example it would make sense that any changes to the item get reflected in cache but my situation is a bit more complicated and I definitely don't want this to happen.

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about cache