NHibernate 缓存问题 - 何时调用 Evict?

2023-12-31

我遇到了一个明显的缓存问题,NHibernate 返回的内容与数据库中的内容不匹配。

我相信这是二级缓存数据。看起来我可以使用 Evict 来做到这一点,但是什么时候应该实际调用 Evict 方法?对于我的特定应用程序,数据对于用户来说是唯一的,并且提供的数据很可能只会使用一次*。

我可以完全禁用这些对象集的二级缓存吗?

更新 10/31

我的场景是这样的:我有一个购物车,客户将在其中添加和删除商品。我正在做的事情如下:在处理购物车的更新之前,我逐出Cart and CartProduct实体。完成此操作后,我检索列表CartProducts来自提供者并返回视图(这发生在 .NET MVC 控制器中)。

更新11/3

购物车已经完成了,我遇到了一个似乎与同一个 NHibernate 问题相关的问题,但实际上是一个 MVC 问题。更深入的挖掘表明,HTML Helper 扩展覆盖了我假设的值,并替换为模型状态中的值。所以这对我来说是双重打击。希望这对某人有帮助。


不可以,您无法禁用某些实体的缓存。

您确实有多种选择:

  1. Use ISession.Clear() to clear all entities from NHibernate's cache.
    • http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache
  2. Use ISession.Evict( obj ) to clear a specific entity from the cache.
    • http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache
  3. Use ISessionFactory.Evict( typeof( obj ) ) to evict all entities/objects of a particular type from the cache. This would be the closest to what you are wanting in my opinion.
    • http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache http://nhibernate.info/doc/nh/en/index.html#performance-sessioncache
  4. Use the IStatelessSession to fetch the objects/entities from the database as this completely bypasses all caches.
    • http://nhibernate.info/doc/nh/en/index.html#batch-statelesssession http://nhibernate.info/doc/nh/en/index.html#batch-statelesssession
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 缓存问题 - 何时调用 Evict? 的相关文章

随机推荐

  • Condor 输出文件更新

    我正在使用 Condor 运行几次模拟 并对程序进行编码 以便它在控制台中输出进度状态 这是在循环结束时完成的 它只是打印当前时间 也可以是百分比或经过的时间 代码看起来像这样 printf START while programNeeds
  • Bootstrap CSS 隐藏导航栏下方容器的一部分 navbar-fixed-top

    我正在使用 Bootstrap 构建一个项目 但遇到了一个小问题 我在导航顶部下方有一个容器 我的问题是容器的某些部分隐藏在导航顶部标题下方 我不想在容器中使用顶部边距 请参阅下面的 HTML 我在其中遇到了问题 div class div
  • java中使用SimpleDateFormat进行时间格式化

    我的要求是以 hh mm 格式在网页上显示日期 但是 如果小时值是 1 位数字 则不应在小时值之前显示零 例如 应显示为 上午 11 30 上午 9 15 下午 1 00 我试图解决这个问题 但这里唯一的问题是从 1 位数小时值中删除多余的
  • 如何使用 XDocument 打印

    使用 ToString 方法时 有什么方法可以让 XDocument 打印 xml 版本吗 让它输出类似这样的内容
  • Grafana 仪表板根据变量值显示/隐藏行

    因此 我有一个 Grafana 仪表板来显示主机内运行的各种服务的日志 现在 我对不同的服务有不同的行 因为指标和标题是特定于服务的 例如对于 Apache 服务 我们有基于 HTTP 状态代码的日志指标 对于 Oracle 数据库服务 我
  • 如何在 Google Cloud Function 上检查经过身份验证的用户

    我正在构建一个网站 并决定使用纯 HTML JS 和完整的 Firebase 这样我就不必实现后端系统来测试新想法 这个问题的用例是所有用户都应该经过身份验证才能访问页面 相当标准的安全功能 对吧 为了实现这一目标 我利用 Google C
  • Javascript 代码:使用下拉 HTML 动态更改货币

    我一整天都在寻找这个 当从下拉菜单中选择国家或货币时 在整个页面上更改货币 我基本上需要的是一个显示国家或货币的下拉菜单 当您选择其中任何一个 例如美元 时 整个页面的所有价格都会更改为美元 现在 如果您更改 AUD CAD PKR 等 它
  • 如何在绘制之前知道小部件的大小?

    我正在尝试使用AnimatedContainer仅用于扩展效果的简单动画 类似于ExpandableTile 当用户按下它时 我的问题是这个容器在展开时可以有 10 0 高度或 1000 0 它必须是动态的 好的 要为其制作动画 它需要事先
  • 检查输入是否在两个值之间(多个条件)

    我正在制作一个项目 我需要读取不同格式的数字 并根据用户输入检查这些数字 在某些情况下 这将是一个像 8800 9000 这样的区间 在某些情况下 它将是一个 4 位数字 在某些情况下 它将是一个 5 位数字 该数组如下所示 var tes
  • ASP.NET MVC DropDownListFor 不从模型中选择值

    我正在使用 ASP NET MVC 3 并且刚刚使用DropDownListForHTML 帮助器 我在我的控制器中执行此操作 ViewBag ShippingTypes this SelectListDataRepository GetS
  • 子进程不创建 ffmpeg 命令的输出文件

    我正在尝试运行一个 ffmpeg 命令来记录我的屏幕并在 python 中创建一个 mp4 记录文件 当我在 shell 中运行该命令时 该命令有效 但当我使用子进程在 Python 脚本中运行该命令时 该命令不起作用 问题是 当使用子进程
  • 将字符编码映射到每个字符的最大字节数

    我正在寻找一个表 将给定的字符编码映射到每个字符的最大字节数 在可变长度编码的情况下 对于固定宽度编码 这很容易 尽管我不知道 在一些更深奥的编码的情况下 宽度是多少 对于 UTF 8 等 最好确定每个字符的最大字节数取决于在字符串中的最高
  • 仅基于表的一列消除重复值

    我的查询 SELECT sites siteName sites siteIP history date FROM sites INNER JOIN history ON sites siteName history siteName OR
  • 最小化代码,因为我使用相同的代码,仅 p 标签中的内容发生变化,组件 Accordion Header 标头发生变化

    我是js新手 我需要显示 6 个滑块 我单击时的每个 div 都应打开其相应的内容 当我再次单击 div 时 内容应该关闭 就像手风琴一样 正确知道它的工作原理 但如何最小化代码 因为我使用相同的代码 只有 p 标签中的内容发生变化 组件
  • CSS 不透明度属性?

    我真的需要所有这些 CSS 不透明度属性吗 我不会同时使用所有这些 而是 以不同的百分比显示它们 但我通常有 4 人一组 我想看看是否可以从样式表中删除任何内容 有人能给我举个 100 25 和 0 的例子吗 我想确保我正确地完成了它们 o
  • iOS5中如何获取默认的LandscapeLeft方向?

    抱歉 如果这个问题重复 但我找不到相同的解决方案 在 iOS6 中 如果我想为一个 UIViewController 设置默认方向 我只需使用 BOOL shouldAutorotate return YES NSUInteger supp
  • 带有 FileField 的 Django 模型——动态“upload_to”参数

    我使用带有 FileField 的模型来处理文件上传 现在文件就可以成功上传了 不过 我还想做一个小改进 那就是为用户创建用户名的文件夹 这是我尝试过的代码 class UserFiles models Model user models
  • 找不到“FacebookSDK/FacebookSDK.h”文件

    我已经安装了最新版本PhoneGap Facebook 插件 https github com phonegap phonegap facebook plugin但是当我构建项目时 我收到以下错误消息 我尝试了 stackoverflow
  • 谷歌地图片段在scrollView内

    所以我一直在尝试使用谷歌地图精简版fragment里面一个scrollView我无法显示地图 删除后scrollView然后将片段单独保留 现在您就可以看到地图了 我只是想了解为什么会这样 以及是否有任何方法可以让这个片段显示在我的滚动视图
  • NHibernate 缓存问题 - 何时调用 Evict?

    我遇到了一个明显的缓存问题 NHibernate 返回的内容与数据库中的内容不匹配 我相信这是二级缓存数据 看起来我可以使用 Evict 来做到这一点 但是什么时候应该实际调用 Evict 方法 对于我的特定应用程序 数据对于用户来说是唯一