在我的C#.NET 3.5應用程序中,我通過NHibernate使用CastleProject ActiveRecord。這是使用MS SQL Server 2008中我已經設置ADO命令超時爲0,以防止超時異常期間批量操作的桌面應用程序:當超時設置爲無限時間時發生超時異常
<activerecord>
<config>
...
<add key="hibernate.command_timeout" value="0" />
</config>
</activerecord>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<property name="command_timeout">0</property>
</session-factory>
</hibernate-configuration>
不過,我仍然收到超時異常! NHibernate的日誌顯示是這樣的:
某處開頭:
2010-10-02 06:29:47746信息 NHibernate.Driver.DriverBase - ADO.NET命令超時設置爲0秒
某處底:
2010-10-02 07:36:03020 DEBUG NHibernate.AdoNet.AbstractBatcher - 封閉IDbCommand的,開放的IDbCommand S: 0 2010-10-02 07:36:03382 ERROR NHibernate.Event.Default.AbstractFlushingEventListener - 與會話 NHibernate.HibernateException未能進行SYN chronize數據庫狀態:在執行時發生 例外 批查詢---> System.Data.S qlClient.SqlException:超時 已過期。在完成操作 之前已經超時了 或者服務器沒有響應。在 System.Data.SqlClient.SqlConnection.OnError(SQLEXCEPTION 例外,布爾breakConnection)
怎麼來的?如何解決這個問題?
一個Web應用程序,我假設? – hardba11 2010-10-02 04:56:49
對不起,沒有說明這一點。不,這是常規的桌面應用程序。 – Alex 2010-10-02 05:21:00
您使用批處理('adonet.batch_size'> 0)嗎?爲什麼你有一個ActiveRecord配置*和*一個單獨的NHibernate配置?什麼樣的SQL語句超時(更新/插入/選擇/刪除)?你使用的是什麼版本的NHibernate和ActiveRecord? – 2010-10-02 16:23:10