在NHibernate下用DateTime作Version的小错误

在NHibernate version标签是,用了Datetime类型。

<version name="UpdateTime" unsaved-value="null" generated="never"  type="DateTime"/> , 对象属性是

   1: public DateTime? UpdateTime
   2: {
   3:     get;
   4:     private set;
   5: }

增删查都没有出现问题,但是在update的时候,就是死活都更新不了,一直报以下的错误。

NHibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):

查了一下文档,原来是DateTime类型,NHibernate只保存年月日时分秒,而Insert的时候,估计NHibernate是自动使用DateTime.Now,所以把微秒也插入了。所以Update的时候,就找不到该行数据,后来把它改为

<version name="UpdateTime" unsaved-value="null" generated="never"  type="Timestamp"/> 就正确执行。

以后还是多看看文档,不过奇怪的是,既然我是用了type=“DateTime”,为什么更新数据库的却带有微秒,和文档说的不一样?我认为这是NHibernate的bug。

查了一下bug Issure,发现已经登记在这里

posted @ 2009-11-01 01:14  沉默的糕点  阅读(774)  评论(0编辑  收藏  举报