0

如果出现某些情况,我想将一个字段设置为 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
4

1 回答 1

0

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

于 2013-02-02T17:58:24.600 回答