【发布时间】:2018-09-24 13:13:06
【问题描述】:
我发现从 NHibernate 5.0 开始我可以调用下面的代码来删除一个表的所有记录:
session.Query<T>().Delete();
它在数据库上执行代码而不通过网络复制它,这应该会大大提高性能。 但是这个查询超时。
我收到以下错误:
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
我尝试将连接字符串中的连接超时设置为 0 和 3600,但没有任何区别。
我的表只有大约 200 条记录。但是一列是base64编码的pdf,所以它很大,查询需要几秒钟。
我还能尝试什么?
【问题讨论】:
-
我现在使用 session.Query
().Timeout(600).Delete(); 设法克服了这个错误。但我觉得这是一个临时的解决方法。我希望能更好地解释/理解为什么需要这样做。 -
您是否单独查看过您的数据库(SQL Server?)活动?例如,如果您运行查询
DELETE FROM MyTable WHERE MyColumn = 1;(或任何正确的查询),性能如何?该表上是否有任何争用导致DELETE被阻止?
标签: sql .net nhibernate