NHibernate原子记录更新

时间:2011-12-04 20:57:04

标签: .net nhibernate transactions

没有交易开放的表中原子更新记录的最佳方法(如果有的话)是什么?我的意思是

 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

1 个答案:

答案 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()