使用NHibernate插入数据库生成的日期

时间:2009-07-08 04:49:55

标签: nhibernate

我是NHibernate的新手,所以请耐心等待。

让我们想象一下,我有一个CreatedDate属性,我希望它填充sql server datetime值。

我发现可能的解决方案是,使用“insert = false”和“update = false”将此属性标记为“generated = always”,然后在sql server级别设置CreatedDate的默认值(i表示数据库列),“Getdate()”。

这是正确的做法吗?感谢您的时间,任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

您需要一个nHibernate审计拦截器:

http://fgheysels.blogspot.com/2008/07/nhibernate-iinterceptor.html

答案 1 :(得分:2)

另一种解决方案是在创建记录时在SQLServer中插入日期。使列不可为空,并将其默认值设置为SQL functon GETDATE()。创建记录时,它将是日期/时间戳。像任何其他DateTime属性一样在NHibernate中映射它。

答案 2 :(得分:1)

您可以将该属性映射为日期时间。然后,在任何插入/更新之前,您可以从数据库中获取日期,如下所示:

myEntity.LastModifiedDate = Session.CreateSQLQuery("SELECT GETDATE()").UniqueResult<DateTime>();
Session.SaveOrUpdate(myEntity);