当前位置: 首页 > 编程语言 > C#

NHibernate在自动刷新事件上表现不佳?Share

时间:2023-04-11 01:59:12 C#

NHibernate在自动刷新事件上表现不佳?首先让我说,我知道NH不建议使用批量操作。但是带着一点兴趣,我想知道为什么这么贵。对于我系统中的200个对象,需要4分钟,其中90%以上的时间花在了DefaultAutoFlushEventListener.OnAutoFlush(感谢RedGateProfiler)。太疯狂了。我想知道是否有人编写了一个自定义的DefaultAutoFlushEventListener来暂时解决这个大量重复更新的问题。UPDATE:这实际上不是批量更新的问题,而是事务和FlushMode查询的问题。但是NH在冲水的时候到底在做什么呢?这个不错。我在一个事务中进行每个更新,在该事务中是一个查询,它是二级缓存,但会导致刷新。如果您在事务中有查询,并且FlushMode=Auto(基本上没有关闭),您将获得刷新。这是非常昂贵的,特别是如果您在会话缓存中有很多对象,我们就是这样做的。将此查询从事务中移出会使??查询时间增加5倍。此外,使整个事务成为事务而不是单个事务是另一个巨大的推动力,因为每个transaction.commit都会导致刷新。更新1000个对象不到30秒,以前都不好意思知道是多久了。啊遗留代码。更新:进一步调查,我已将FlushMode设置为提交我们特定的嵌套事务模型。无需详细说明,我们有一个特定的事务模型,在使用嵌套“逻辑”调用时会考虑嵌套事务。对于遗留应用程序,我们不希望一揽子设置。这种情况下的具体问题是使用事务和将FlushMode设置为Auto(或Always)的组合。虽然不建议将标准ISession用于批量操作,但您可以使用无状态会话或DML。以上就是C#学习教程:NHibernatedoesnotperformwellonauto-refreshevents?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: