Asp.Net Cache,从缓存修改对象,并更改缓存值
发布时间:2020-05-28 07:41:31 所属栏目: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-mvc-3 – MVC 3 knockoutjs:在使用EditorFor作为布
- asp.net实现access数据库分页的方法
- asp.net-mvc – 作为静态文件的根目录的项目子目录
- asp.net-mvc – ASP.NET MVC – 什么是UrlRoutingModule?
- asp.net-mvc和webforms共存
- asp.net-mvc-3 – MVC3 Html.ActionLink Post
- asp.net – UpdatePanel回发后调用Javascript函数问题
- asp.net-core – 如何在.Net Core应用程序中读取web.config
- asp.net-mvc – 通用列表属性的必需属性
- ASP.NET MVC的OnResultExecuted方法中的ActionResult的filt
推荐文章
站长推荐
- asp.net-mvc-3 – ASP.Net MVC 3重定向未经授权的
- Jquery 组合form元素为json格式,asp.net反序列化
- asp.net-mvc – MVC3部署依赖问题
- asp.net – 如何防止网页上的CSS缓存?
- asp.net核心 – ASP – 启动时核心迁移EF核心SQL
- asp.net – DropDownList获取底层对象
- asp.net-mvc – ASP.NET MVC绑定模型中的数组
- asp.net – 避免使用CORS进行预检OPTIONS请求
- asp.net – 当页面在iFrame中时,会话变量不会保存
- ASP.NET MVC 3可以在ASP.NET 3.5网站中运行吗?
热点阅读
