Mic*_*ick 4 nhibernate fluent-nhibernate
当我将数据导入大型表时,我遇到了问题,整个网站都会关闭,直到导入完成.插入/更新过程最多可能需要3个小时才能完成.此外,如果由于某种原因抛出异常,表将无限期地保持锁定状态,直到重新启动应用程序池.
我调查了发生的事情.显然,触摸的表将被锁定,直到此过程完成.如果这是直接的SQL查询,我会在查询中添加"with(NOLOCK)"来解决问题.但是,我无法弄清楚如何告诉Fluent NHibernate将其添加到它生成的查询中.
另外,有没有一种方法可以构建会话工厂,我可以将其设置为默认情况下将"with(NOLOCK)"打开到所有查询中?
提前致谢.
打开会话或无状态会话时,使用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)
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |