在我的 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:47,746 信息 NHibernate.Driver.DriverBase - 将 ADO.NET 命令超时设置为 0 秒
在最后的某个地方:
2010-10-02 07:36:03,020 调试 NHibernate.AdoNet.AbstractBatcher - 关闭 IDbCommand,打开 IDbCommand s:0 2010-10-02 07:36:03,382 错误 NHibernate.Event.Default.AbstractFlushingEventListener - 无法同步数据库状态with session NHibernate.HibernateException: 执行批量查询时发生异常---> System.Data.SqlClient.SqlException: Timeout expired。在操作完成之前超时时间已过或服务器没有响应。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection)
怎么来的?如何解决这个问题?