6

我需要在单个事务中完成大量数据库处理,包括使用 NHibernate 进行的一些处理。

为了让一切都在同一个事务中工作,我使用 NHibernate 的 Session 来启动它,并为其中的其他工作征集命令。

一切顺利,直到我提交。那时我得到一个事务超时。

如何将 NHibernate 事务超时值设置得足够高?

我们使用 FluentNHibernate。

4

1 回答 1

5

经过一些试验和很多错误,我发现了这个:

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>
于 2013-02-08T11:29:54.770 回答