使用Session.SaveOrUpdate(myEntity)时; NHibernate如何决定是插入新记录还是更新现有记录?
我在S#arp项目中保存一个对象时遇到了麻烦.它从存储中检索,然后以会话状态存储几个Web请求,然后保存回数据库,其中一个属性已更改(不是S#arp [DomainSignature]).
我在运行时使用Equals()方法直接从数据库中比较即将持久化的对象和刚刚检索到的版本,并返回true.但是,该对象仍然最终在数据库中创建一个新行.
在应用程序的其他地方,这工作正常,但我希望指出NHib如何解决这个问题.
最佳答案 基本上SaveOrUpdate()正在寻找一个标识符.如果存在标识符,它将更新数据库中的记录.如果标识符不存在,则会创建新记录.
但是,听起来你的会话中可能会有一些时髦的东西.您可能想尝试SaveOrUpdateCopy()来查看这是否解决了您的问题.