为NHibernate中的一个属性执行自定义sql

为NHibernate中的一个属性执行自定义sql,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,据我所知,NHibernate内置了对时间戳的支持。但是,您似乎只能指示NHibernate从不更新属性或始终更新属性 在我目前正在处理的项目中,有几个表既有“created\u time”也有“updated\u time”,都是由数据库生成的 我不知道如何指示NHibernate对这两个属性使用“getdate()”仅在插入时为“created\u time”以及插入和更新时为“updated\u time”使用 这可能吗 PS:我正在使用一个遗留数据库,不允许更改它,因此触发器等都不是可能

据我所知,NHibernate内置了对时间戳的支持。但是,您似乎只能指示NHibernate从不更新属性或始终更新属性

在我目前正在处理的项目中,有几个表既有“
created\u time
”也有“
updated\u time
”,都是由数据库生成的

我不知道如何指示NHibernate对这两个属性使用“
getdate()
”仅在插入时为“
created\u time
”以及插入和更新时为“
updated\u time
”使用

这可能吗


PS:我正在使用一个遗留数据库,不允许更改它,因此触发器等都不是可能的解决方案。

您可以通过创建一个设置这些值的拦截器来解决这个问题,但当然,这些值不是由DBMS生成的


这可能是一个解决方法,因为我也不知道如何确保DB填充这些值,但我也对解决此问题的另一个解决方案感兴趣。:)

您使用的是哪个版本的NHibernate

在2.0中,属性上的“生成”标记有三个有效值:

  • 从不(不言自明)
  • 插入(仅在插入时检索生成的值)
  • 始终(始终检索生成的值)

最后,我选择了拦截器解决方案,但如果有一个特殊的属性,那就太好了。