为什么NHibernate没有意识到我的域对象需要更新,而不是插入?

时间:2010-07-14 08:38:21

标签: nhibernate insert nhibernate-mapping

我有一个使用NHibernate加载域对象的网页。然后将对象的状态存储在页面控件中,当用户单击“保存”按钮时,将创建一个新对象,并从页面控件中填充其属性(包括Id)。然后我在对象上调用session.Save()。

这对我来说意味着NHibernate应该使用UPDATE而不是INSERT,因为Id属性已经设置并且与unssaved-value不同。但是,NHibernate正试图插入它。

我在下面列出了与Id相关的映射文件部分:

<id name="Id" column="StoredWillId" unsaved-value="0">
  <generator class="native" />
</id>

有谁能解释这里发生了什么?

由于

大卫

1 个答案:

答案 0 :(得分:3)

调用session.SaveOrUpdate()。 session.Save()insert,session.Update()updates,session.SaveOrUpdate()保存,如果Id为0,否则更新。