Asp.Net Cache,从缓存修改对象,并更改缓存值
发布时间:2020-12-15 23:26:54 所属栏目:asp.Net 来源:网络整理
导读:使用Asp.Net Cache功能时,我有一个问题.我将一个对象添加到缓存,然后在另一个时间,我从缓存中获取该对象,修改其中一个属性,然后将更改保存到数据库. 但是,下一次从Cache获取对象时,它包含更改的值.所以,当我修改对象时,它会修改缓存中包含的版本,即使我没有
使用Asp.Net Cache功能时,我有一个问题.我将一个对象添加到缓存,然后在另一个时间,我从缓存中获取该对象,修改其中一个属性,然后将更改保存到数据库.
但是,下一次从Cache获取对象时,它包含更改的值.所以,当我修改对象时,它会修改缓存中包含的版本,即使我没有在缓存中更新它.有人知道如何从缓存中获取一个不引用缓存版本的对象? 即 步骤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."); } 我意识到,使用上面的例子,对项目的任何更改都将反映在缓存中是有意义的,但是我的情况有点复杂,我绝对不希望这样做. 解决方法
缓存只是这样,它缓存了你放入的任何东西.
如果缓存引用类型,检索引用并进行修改,当然下次检索缓存的项时,它将反映修改. 如果你想有一个不可变的缓存项目,使用一个结构体. Cache.Insert("class",new MyClass() { Title = "original" },System.Web.Caching.Cache.NoSlidingExpiration); MyClass cachedClass = (MyClass)Cache.Get("class"); cachedClass.Title = "new"; MyClass cachedClass2 = (MyClass)Cache.Get("class"); Debug.Assert(cachedClass2.Title == "new"); Cache.Insert("struct",new MyStruct { Title = "original" },System.Web.Caching.Cache.NoSlidingExpiration); MyStruct cachedStruct = (MyStruct)Cache.Get("struct"); cachedStruct.Title = "new"; MyStruct cachedStruct2 = (MyStruct)Cache.Get("struct"); Debug.Assert(cachedStruct2.Title != "new"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET代码生成器
- .net – 使用UrlHelper.Action方法生成网址时,引用异常
- asp.net – 为.Net使用HighchartsExport库我得到空白页面
- asp.net-mvc – 是否可以手动更新ModelState.IsValid?
- asp.net-mvc – T4MVC在控件库中使用扩展方法
- 解决T4模板的程序集引用的五种方案
- asp.net-mvc-3 – 是否可能获得一个ASP.NET MVC 3项目工作在
- asp.net – 根据网页中的隐藏字段编辑数据库记录有哪些安全
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方
- asp.net – 请求在IIS工作进程中存在于RequestAcquireState
推荐文章
站长推荐
- asp.net-mvc – MVC的实际应用||什么时候使用,还
- asp.net-mvc – ASP .NET MVC正确的UserControl架
- asp.net – 从EF 6 Code First迁移和多个配置生成
- asp.net – 使用mvc-mini-profiler 1.9“无法确定
- asp.net-mvc – 使用CSVHelper将流输出到浏览器
- entity-framework – ViewModels和MVC中Entity F
- asp.net-mvc-3 – MVC3剃须刀:是否可以渲染传统
- asp.net-mvc – 我应该把我的控制器业务逻辑放在
- asp.net-mvc – Razor方法Chaining / Fluent不适
- asp.net – 如何从Javascript调用控制器方法
热点阅读