我有一个使用NHibernate加载域对象的网页。然后将对象的状态存储在页面控件中,当用户单击“保存”按钮时,将创建一个新对象,并从页面控件中填充其属性(包括Id)。然后我在对象上调用session.Save()。
这对我来说意味着NHibernate应该使用UPDATE而不是INSERT,因为Id属性已经设置并且与unssaved-value不同。但是,NHibernate正试图插入它。
我在下面列出了与Id相关的映射文件部分:
<id name="Id" column="StoredWillId" unsaved-value="0">
<generator class="native" />
</id>
有谁能解释这里发生了什么?
由于
大卫
答案 0 :(得分:3)
调用session.SaveOrUpdate()。 session.Save()insert,session.Update()updates,session.SaveOrUpdate()保存,如果Id为0,否则更新。