如何在NHibernate更新中使用SQL函数?

时间:2013-02-02 17:29:11

标签: nhibernate

如果出现某些条件,我想将字段设置为MySQL函数的值 NOW()。条件可在更新前不久确定(例如IInterceptor.OnSaveSession.SaveOrUpdate(myObj))。此操作应该在NHibernate的Update语句中进行,其他字段也会更新。

生成的SQL可能与此类似:

UPDATE myTable 
SET myStringCol = 'someVal', myDateCol = NOW() 
WHERE myId = 123;

应满足以下限制条件,但我将采取切实可行的每一种解决方案:

  • 在更新之前查询NOW()会使服务器充满不必要的请求
  • 不幸的是,无法使用SP或触发器
  • 无法使用.Net DateTime.Now,它必须是服务器时间
  • 由于条件原因,无法使用表格列的默认值
  • 我知道自定义SQL用于创建,更新和删除的可能性(nhforge.org/doc/nh/en/index.html 17.3),但是如何实现条件?
  • 使用MySQL 5.1 / 5.5 / 5.6
  • 使用最新的NH 3.3.2

1 个答案:

答案 0 :(得分:0)

您可以将生成的属性用于INSERT和UPDATE 请参阅第5章的文档 http://nhibernate.info/doc/nh/en/index.html#mapping-generated