Sql server 使用NHibernate的sql server 2008中的悲观锁定
SQL Server不支持NHibernate用于悲观锁定的“选择更新”语法。 我阅读了其他备选方案的描述(我喜欢“选择带(…)”,因为它非常接近) 然而,NHibernate似乎不支持这种语法 你有解决办法吗? 我相信这可以通过修补NHibernate的内部结构来实现,但目前这对我来说并不划算(学习曲线)。 我还可以使用一个带有应用程序锁的存储过程,并从NHibernate访问它。 还有其他建议吗?Sql server 使用NHibernate的sql server 2008中的悲观锁定,sql-server,nhibernate,Sql Server,Nhibernate,SQL Server不支持NHibernate用于悲观锁定的“选择更新”语法。 我阅读了其他备选方案的描述(我喜欢“选择带(…)”,因为它非常接近) 然而,NHibernate似乎不支持这种语法 你有解决办法吗? 我相信这可以通过修补NHibernate的内部结构来实现,但目前这对我来说并不划算(学习曲线)。 我还可以使用一个带有应用程序锁的存储过程,并从NHibernate访问它。 还有其他建议吗? (除了总是先读再写……)我不喜欢;我不太了解NHibernate,但在SQL中,ROWVERS
(除了总是先读再写……)我不喜欢;我不太了解NHibernate,但在SQL中,ROWVERSION类型的列通常用于实现乐观锁定。示例NHibernate有一个乐观锁定的版本策略:
这不是悲观的锁定吗?乐观锁定是指不预先锁定,希望行不会更改,然后测试更新中的更改。当然,你是对的。谢谢,编辑。谢谢,Ayende的博客很棒,尽管我错误地询问了乐观锁定(尽管我需要悲观锁定),但这篇文章帮助了我——因为它演示了session.Get(1,LockMode.Upgrade)是如何实现的;翻译成。。。从…起WITH(updlock,rowlock)-这意味着NHibernate(至少2.x)确实支持SQL Server的悲观锁定语法。