asp.net-mvc – NHibernate缓存问题 – 何时调用Evict?
我遇到了一个明显的缓存问题,即NHibernate返回的内容与数据库中的内容不匹配.
我相信这是level2缓存数据.看起来我可以使用Evict来执行此操作,但是什么时候应该实际调用Evict方法?对于我的特定应用程序,数据对用户来说是唯一的,并且提供的数据很可能只使用一次*. 我可以完全禁用这些对象的Level2缓存吗? 更新10/31 我的情况是:我有一个购物车,客户将添加和删除项目.我正在做的是以下内容:在处理购物车更新之前,我逐出Cart和CartProduct实体.完成后,我从提供程序中检索CartProducts列表并返回视图(这发生在.NET MVC控制器中). 更新11/3 购物车已经完成,我遇到了一个似乎与同一个NHibernate问题有关的问题,但实际上是一个MVC问题.更深入的挖掘揭示了HTML Helper扩展覆盖了我想要的值,并取而代之的是Model状态.所以在这个问题上有一个双重打击.希望这有助于某人. 解决方法
不,您无法禁用某些实体的缓存.
你有几个选择: >使用ISession.Clear()清除NHibernate缓存中的所有实体. > http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache >使用ISession.Evict(obj)从缓存中清除特定实体. > http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache >使用ISessionFactory.Evict(typeof(obj))从缓存中驱逐特定类型的所有实体/对象.在我看来,这将是你最想要的. > http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache >使用IStatelessSession从数据库中获取对象/实体,因为这会完全绕过所有缓存. > http://nhibernate.info/doc/nh/en/index.html#batch-statelesssession (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iis-7 – 经典ASP,在Windows Server 2008上发送电子邮件 –
- asp.net – 未捕获TypeError:无法读取未定义的属性“UI”
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- Asp.net mvc vs Angular JS用于开发应用程序
- 将我的ASP.NET MVC页面保存为pdf
- asp.net – CompositeControl中的DropDownList是否应该记住
- asp.net – 如何在.net核心框架中使用TransactionScope?我
- 帮助页面ASP.NET vNext MVC 6 Web Api
- 如何解决分布式系统中的跨时区问题[原理篇]
- asp.net – iis 7.0,模块订单更改