ActiveRecord:如何添加NOLOCK?

ActiveRecord:如何添加NOLOCK?,activerecord,Activerecord,使用ActiveRecord时需要添加“WITH NOLOCK”?我知道有一种方法可以做到这一点,但在ActiveRecord中无法找到 谢谢你的帮助。 关于,我知道这很古老,但答案如下: criteria.SetLockMode(NHibernate.LockMode.None); 模块活动记录 模块连接适配器 类SQLServerAdapter'WITH(NOLOCK)即可与当前版本的activerecord sqlserver适配器(在编写本文时为2.3.24和3.2.10)配合使用 如

使用ActiveRecord时需要添加“WITH NOLOCK”?我知道有一种方法可以做到这一点,但在ActiveRecord中无法找到

谢谢你的帮助。
关于,

我知道这很古老,但答案如下:

criteria.SetLockMode(NHibernate.LockMode.None);
模块活动记录
模块连接适配器
类SQLServerAdapter
仅在查询中使用
:lock=>'WITH(NOLOCK)
即可与当前版本的activerecord sqlserver适配器(在编写本文时为2.3.24和3.2.10)配合使用

如果您想将其添加到特定模型的所有查询中,只需将

default_scope :lock => 'WITH (NOLOCK)'

在您的模型中。

将其添加到您的activerecord模型中

default_scope joins('WITH (NOLOCK)')
DoDo:lock=>'with(NOLOCK)'它将用“with(ROWLOCK,UPDLOCK)”锁定每一行。

default\u范围{
锁定('带(无锁定)')
}

不要恢复旧帖子。但是有一个选项可以锁定每个查询,而不是在模型中设置它

例如:

Account.where("name = 'shugo'").lock(true).first
查看此链接了解更多信息。

你有没有想过这个问题?这是我的解决方案,它将锁定行。大故障(ROWLOCK,UPDLOCK)要被感知,你能详细说明为什么你认为它会用额外的锁锁定每一行吗?因为我在一个大的遗留项目中使用了这种技术,没有任何问题。在我看来,:lock=>'with(NOLOCK)'只是在查询中添加了with(NOLOCK)子句,下面是sqlserver适配器的相应规范-。我遗漏了什么吗?不确定,我所知道的是,当我使用发生在我身上的代码“WITH(ROWLOCK,UPDLOCK)”时,似乎当前(v1.3.7及更早版本),当您使用:lock=>“WITH(NOLOCK)”,activerecord jdbcmssql适配器将使用“WITH(ROWLOCK,UPDLOCK)”,而activerecord sqlserver适配器将做正确的事情。当您尝试使用关联时,joins('WITH(NOLOCK)')有时会在两者上生成无效的sql。
Account.where("name = 'shugo'").lock(true).first