【发布时间】:2019-08-01 16:11:01
【问题描述】:
我有一个简单的休眠查询,查询中使用了 nolock。我收到错误 - 发生识别错误并且休眠错误是抛出异常:NHibernate.dll 中的“NHibernate.Hql.Ast.ANTLR.QuerySyntaxException”。它可以在没有锁定的情况下工作。我不想使用
<property name="connection.isolation">ReadUncommitted</property>
因为我必须只对特定表应用 nolock。
下面是hql查询-
select d from Users d with (nolock) where d.Userid = 2
我错过了什么吗?
【问题讨论】:
-
为什么一定要申请
NOLOCK? -
无论数据是否被另一个进程锁定,我都想快速读取数据。实际上我正在评估我的项目的一些 hql 查询。
-
@SSD,我建议快照隔离而不是
NOLOCK或READ UNCOMITTED。请注意,NOLOCK可能会导致结果中的行被跳过或重复,而不仅仅是未提交的数据。 -
这不是
NOLOCK通过 @SSD 所做的。 Bad Habits: Putting NOLOCK everywhere.
标签: c# sql sql-server nhibernate read-uncommitted