Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用NHibernate的sql server 2008中的悲观锁定_Sql Server_Nhibernate - Fatal编程技术网

Sql server 使用NHibernate的sql server 2008中的悲观锁定

Sql server 使用NHibernate的sql server 2008中的悲观锁定,sql-server,nhibernate,Sql Server,Nhibernate,SQL Server不支持NHibernate用于悲观锁定的“选择更新”语法。 我阅读了其他备选方案的描述(我喜欢“选择带(…)”,因为它非常接近) 然而,NHibernate似乎不支持这种语法 你有解决办法吗? 我相信这可以通过修补NHibernate的内部结构来实现,但目前这对我来说并不划算(学习曲线)。 我还可以使用一个带有应用程序锁的存储过程,并从NHibernate访问它。 还有其他建议吗? (除了总是先读再写……)我不喜欢;我不太了解NHibernate,但在SQL中,ROWVERS

SQL Server不支持NHibernate用于悲观锁定的“选择更新”语法。 我阅读了其他备选方案的描述(我喜欢“选择带(…)”,因为它非常接近)

然而,NHibernate似乎不支持这种语法

你有解决办法吗? 我相信这可以通过修补NHibernate的内部结构来实现,但目前这对我来说并不划算(学习曲线)。 我还可以使用一个带有应用程序锁的存储过程,并从NHibernate访问它。 还有其他建议吗?
(除了总是先读再写……)我不喜欢;我不太了解NHibernate,但在SQL中,ROWVERSION类型的列通常用于实现乐观锁定。示例

NHibernate有一个乐观锁定的版本策略:


这不是悲观的锁定吗?乐观锁定是指不预先锁定,希望行不会更改,然后测试更新中的更改。当然,你是对的。谢谢,编辑。谢谢,Ayende的博客很棒,尽管我错误地询问了乐观锁定(尽管我需要悲观锁定),但这篇文章帮助了我——因为它演示了session.Get(1,LockMode.Upgrade)是如何实现的;翻译成。。。从…起WITH(updlock,rowlock)-这意味着NHibernate(至少2.x)确实支持SQL Server的悲观锁定语法。