当使用 Session.SaveOrUpdate(myEntity);
时,NHibernate 如何决定是插入新记录还是更新现有记录?
我在 S#arp 项目中保存一个对象时遇到问题。它从存储中检索,然后存储在 session 状态中用于几个 Web 请求,然后保存回数据库并更改一个属性(不是 S#arp [DomainSignature]
)。
在运行时,我使用 Equals()
方法将即将持久化的对象与直接从数据库中检索到的版本进行比较,结果返回 true。但是,该对象最终仍会在数据库中创建一个新行。
在应用程序的其他地方,这工作正常,但我希望获得有关 NHib 如何解决此问题的指示。
最佳答案
基本上 SaveOrUpdate()
正在寻找一个标识符。如果标识符存在,它将更新数据库中的记录。如果标识符不存在,它将创建一个新记录。
但是,听起来您的 session 中可能发生了一些奇怪的事情。您可能想尝试 SaveOrUpdateCopy()
看看这是否能解决您的问题。
关于c# - NHibernate 如何确定是插入还是更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660496/