我需要在单个事务中完成大量数据库处理,包括使用 NHibernate 的一些处理。
为了使所有内容在同一个事务中工作,我使用 NHibernate 的 Session 来启动它,并在其中登记其他工作的命令。
一切都很顺利,直到我承诺为止。那时我得到了交易超时。
如何将 NHibernate 事务超时值设置得足够高?
我们使用 FluentNHibernate。
经过一番尝试和大量错误后,我发现:
NHibernate 似乎采用“TransactionManager.DefaultTimeout”值。
可以通过设置
<system.transactions>
<defaultSettings timeout="01:00:00" />
</system.transactions>
在应用程序/网络配置中
如果将其设置为高于 TransactionManager.MaximumTimeout 的值,则事务超时将默认为该值。
如果您需要更长的时间,您可以通过更新 .Net 框架版本的“machine.config”来延长该时间:
<system.transactions>
<machineSettings maxTimeout="01:00:00" />
</system.transactions>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)