如何在Fluent NHibernate中关闭锁定?

Mic*_*ick 4 nhibernate fluent-nhibernate

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

我调查了发生的事情.显然,触摸的表将被锁定,直到此过程完成.如果这是直接的SQL查询,我会在查询中添加"with(NOLOCK)"来解决问题.但是,我无法弄清楚如何告诉Fluent NHibernate将其添加到它生成的查询中.

另外,有没有一种方法可以构建会话工厂,我可以将其设置为默认情况下将"with(NOLOCK)"打开到所有查询中?

提前致谢.

mat*_*ttk 7

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

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

    transaction.Commit();
}
Run Code Online (Sandbox Code Playgroud)