NHibernate如何确定是否插入或更新记录?

时间:2010-09-07 16:16:48

标签: c# nhibernate s#arp

使用Session.SaveOrUpdate(myEntity);时,NHibernate如何决定是插入新记录还是更新现有记录?

我在S#arp项目中保存一个对象时遇到了麻烦。它从存储中检索,然后以会话状态存储几个Web请求,然后保存回数据库,其中一个属性已更改(不是S#arp [DomainSignature])。

我在运行时使用Equals()方法将要保留的对象直接与数据库中的新检索版本进行比较,并返回true。但是,该对象仍然会在数据库中创建一个新行。

在应用程序的其他地方,这工作正常,但我希望指出NHib如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

基本上SaveOrUpdate()正在寻找一个标识符。如果存在标识符,它将更新数据库中的记录。如果标识符不存在,它将创建一个新记录。

然而,听起来你的会话中可能会有一些时髦的东西。您可能需要尝试SaveOrUpdateCopy(),看看这是否能解决您的问题。