如何使NHibernate自动更改“已更新”列

时间:2010-03-17 03:39:17

标签: nhibernate nhibernate-mapping

我正在将NHibernate应用于现有项目,其中已经定义并修复了表和列。

数据库是MS-SQL-2008。 NHibernate 2.1.2

许多表都有一个名为“ReplicationID”的timestamp类型的列,以及一个名为“UpdatedDT”的datetime类型的列。

我知道我可以使用映射文件的<timestamp>元素来描述“ReplicationID”列,它将允许NHibernate管理该列。

当行更新时,是否可以让NHibernate自动更新UpdatedDT列?我想我可以尝试将UpdatedDT属性映射为timestamp类型,但这会产生其他副作用。

2 个答案:

答案 0 :(得分:4)

您可以将generated =“always”用于数据库设置/更新的属性。然后,NHiberante将在插入/更新语句之后为此列发出一个select。

示例:

<property name="CreatedOn" 
          insert="false" update="false" type="Timestamp" generated="insert" />
<property name="UpdatedOn" 
          insert="false" update="false" type="Timestamp" generated="always" />

版本/时间戳同样适用:

 <version name="_timeStamp" generated="always" unsaved-value="null" type="BinaryBlob"   access="field">
      <column name="TimeStamp" not-null="false" sql-type="timestamp"/>
 </version>

答案 1 :(得分:2)