我需要在单个事务中完成大量的数据库处理,包括使用NHibernate进行一些处理。
为了让一切都在同一个事务中工作,我正在使用NHibernate的Session来启动它,并为其中的其他工作登记命令。
一切顺利,直到我承诺。那时我得到了一个事务超时。
如何将NHibernate事务超时值设置得足够高?
我们使用FluentNHibernate。
答案 0 :(得分: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>