2010-09-07 75 views
4

当使用Session.SaveOrUpdate(myEntity); NHibernate如何决定如何插入新记录或更新现有的记录?NHibernate如何确定是否插入或更新记录?

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

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

在应用程序的其他地方,这是工作正常,但我希望有一个指针NHBC是如何工作的。

+1

您可能想检查此前一个问题:http://stackoverflow.com/questions/170962/nhibernate-difference-between-session-merge-and-session-saveorupdate – 2010-09-07 16:24:51

+1

另一个答案:http://stackoverflow.com /问题/ 1150854/saveorupdate-VS-更新并节省功能于NHibernate的 – 2010-09-07 16:27:11

回答

2

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

但是,这听起来像你可能会在你的会话中发生一些奇怪的事情。您可能想尝试SaveOrUpdateCopy()以查看是否可以解决您的问题。

相关问题