在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,发现已经登记在这里