如何在nhibernate中全局设置超时

如何在nhibernate中全局设置超时,nhibernate,Nhibernate,我定期收到以下异常 System.Data.SqlClient.SqlException:超时已过期。超时 操作完成前经过的时间或服务器已关闭 没有回应 为了增加超时时间,我在标准中添加了以下内容 .SetTimeout(180) 1) 有没有办法将其添加到我的nhibernate配置中,使180是默认时间 2) 增加超时的后果是什么?这会增加或减少死锁的可能性吗?command\u timeout-指定NHibernate生成的IDB命令的默认超时 取自表3.1。 广告2。连接超时无法帮助

我定期收到以下异常

System.Data.SqlClient.SqlException:超时已过期。超时 操作完成前经过的时间或服务器已关闭 没有回应

为了增加超时时间,我在标准中添加了以下内容

 .SetTimeout(180)
1) 有没有办法将其添加到我的nhibernate配置中,使180是默认时间


2) 增加超时的后果是什么?这会增加或减少死锁的可能性吗?

command\u timeout
-指定NHibernate生成的IDB命令的默认超时

取自表3.1。

广告2。连接超时无法帮助您解决死锁。Timeout是客户端等待DB响应的时间,如果超时,DB只发送错误状态

另一方面,死锁是可解决的,因为一个事务拥有一个锁,并等待其他事务拥有的另一个锁,同时等待第一个事务锁定的资源。请注意,当DB检测到这个问题时,它会立即释放错误,而不是在任何超时之后

见:

当您增加超时时,您唯一允许的是当任何事务持有您正在等待的锁时,等待时间更长

例如,当您有一个客户端,它将较大的数据部署到您的系统中,并在表的基础上执行锁定。部署操作可能需要60秒。假设另一个从表中读取数据的客户机,该客户机被阻塞
60秒
,直到能够读取数据为止。假设
timeout=30秒
-这总是失败,另一方面,与
90秒超时
相同的情况也会发生


视情况而定,但您应该提供尽可能小的事务,以实现更好的延迟和吞吐量。

值得一提的是,值0不会超时,并且可能会永远等待。