【发布时间】:2011-02-17 02:18:56
【问题描述】:
我在使用 Asp.Net 缓存功能时遇到问题。我将一个对象添加到缓存中,然后在另一次从缓存中获取该对象,修改它的一个属性,然后将更改保存到数据库中。
但是,下次我从缓存中获取对象时,它包含更改的值。因此,当我修改对象时,它会修改缓存中包含的版本,即使我没有专门在缓存中更新它。有谁知道我如何从缓存中获取不引用缓存版本的对象?
即
第 1 步:
Item item = new Item();
item.Title = "Test";
Cache.Insert("Test", item, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);
第 2 步:
Item item = (Item)Cache.Get("test");
item.Title = "Test 1";
第 3 步:
Item item = (Item)Cache.Get("test");
if(item.Title == "Test 1"){
Response.Write("Object has been changed in the Cache.");
}
我意识到,通过上面的示例,对项目的任何更改都会反映在缓存中是有道理的,但我的情况有点复杂,我绝对不希望这种情况发生。
【问题讨论】:
-
也许
Item是struct?一个完整的代码示例会很有帮助...