如何在NHibernate事务上设置超时

k.c*_*.c. 5 nhibernate transactions fluent-nhibernate

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

为了使所有内容在同一个事务中工作,我使用NHibernate的Session启动它,并为其中的其他工作登记命令.

一切顺利,直到我承诺.那时我得到了一个事务超时.

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

我们使用FluentNHibernate.

k.c*_*.c. 5

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

似乎NHibernate采用"TransactionManager.DefaultTimeout"值.

它可以通过设置

 <system.transactions>
     <defaultSettings timeout="01:00:00" />
 </system.transactions>
Run Code Online (Sandbox Code Playgroud)

在app/web配置中

如果将其设置为高于TransactionManager.MaximumTimeout的值,则事务超时将默认为该值.如果您需要更长时间,可以通过更新.Net框架版本的"machine.config"来延长时间:

<system.transactions>
    <machineSettings maxTimeout="01:00:00" />
</system.transactions>
Run Code Online (Sandbox Code Playgroud)