没有交易开放的表中原子更新记录的最佳方法(如果有的话)是什么?我的意思是
UPDATE Table_1 SET Value=Value+@Increment WHERE Id=@Id
也许有可能通过Hiber或来自NHibernate的平面SQL ...
最后的NHibernate版本是否支持通过HQL更新? 这句话怎么样?
UPDATE Table_1 SET Value=Value+@Increment, @Result=1
WHERE Id=@Id AND Value+@Increment<=@MaxLimit;SELECT @Result
答案 0 :(得分:1)
HQL:
session.CreateQuery("UPDATE Entity1 SET Value=Value + :Increment WHERE Id=:Id")
.SetParameter("Increment", 10)
.SetParameter("Id", 5)
.ExecuteUpdate()
SQL:
session.CreateSqlQuery("UPDATE Table_1 SET Value=Value + :Increment WHERE Id=:Id")
.SetParameter("Increment", 10)
.SetParameter("Id", 5)
.ExecuteUpdate()