gpt4 book ai didi

nhibernate - 如何在 Fluent NHibernate 中关闭锁定?

转载 作者:行者123 更新时间:2023-12-04 02:24:53 25 4
gpt4 key购买 nike

当我将数据导入到一个大表时,我遇到了这个问题,整个网站都会宕机,直到导入完成。插入/更新过程最多可能需要 3 小时才能完成。此外,如果由于某种原因抛出异常,则表将无限期地保持锁定状态,直到应用程序池重新启动。

我调查了正在发生的事情。显然,在此过程完成之前,所接触的表已被锁定。如果这是直接 SQL 查询,我会在查询中添加“with (NOLOCK)”以解决问题。但是,我不知道如何告诉 Fluent NHibernate 将其添加到它生成的查询中。

另外,在构建 session 工厂时,是否有一种方法可以在所有查询中默认打开“with (NOLOCK)”设置?

提前致谢。

最佳答案

当您打开 session 或无状态 session 时,使用 IsolationLevel.ReadUncomitted 开始事务。这相当于在该事务中的所有语句上指定 NOLOCK。

using (var session = _sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction(IsolationLevel.ReadUncommitted))
{
// do work

transaction.Commit();
}

关于nhibernate - 如何在 Fluent NHibernate 中关闭锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com