设置 NHibernate SaveOrUpdate 调用的命令超时



我想为NHibernate中对Session.SaveOrUpdate(myentity)的特定调用设置低于默认的CommandTimeout。这可能吗,如果是,该怎么做?

在我的代码中,我使用工作单元模式,因此特定工作单元/会话的超时也可以正常工作。

这个问题的背景:我有一个网络系统。其中有一些我想保存的日志记录/调试信息,但如果实际的数据库插入需要很长时间,我宁愿插入失败并快速返回(不到 1 秒),也不愿花费很长时间。但是,对于大多数其他数据库操作,默认命令超时是可以的。现在,插入几乎总是超级快。但是,如果由于某种原因数据库很慢(不是每天都会发生的事情),则网站的访问者会受到我想避免的慢日志记录的影响。由于信息并不重要,我希望一个简单的解决方案是设置数据库调用的超时。

无法为更新配置单个超时。

另一方面:

  • Save/Update/Delete 方法不一定会导致数据库调用。调用发生在Flush上(插入具有标识 ID 的实体除外)
  • insert/update语句通常不会超时。如果他们这样做,则您的设置有其他问题
  • 您仍然可以配置全局CommandTimeout 。让它足够长,以满足您的需求。

更新:阅读您的评论后,说您想做与我的想法相反的事情(即设置极低的超时),很明显您遇到了架构问题。

如果您正在编写的信息与当前请求无关,而不是尝试"尽快"保存它并在不够快时失败,您应该使用队列(选择任何)在请求之外甚至进程/机器之外进行插入。

相关内容

  • 没有找到相关文章