NHibernate 中的 SaveOrUpdate 和 Save/Update 有什么区别。为什么不总是使用 SaveOrUpdate 呢?另外,SaveOrUpdateCopy 有什么意义?
最佳答案
第 9 章比我更好地涵盖了所有这些内容:
http://nhibernate.info/doc/nh/en/index.html
但是悬崖笔记:
Save()
获取一个没有标识符的新对象并将其附加到 session 。该对象将被INSERT
'd。
Update()
获取具有标识符但不在 session 中的现有对象,并将其附加到 session 。该对象将被UPDATE
'd。
SaveOrUpdate()
查看标识符并决定上面的内容。
SaveOrUpdateCopy()
的特殊之处在于,您有两个具有相同标识符的对象 - 一个在 session 中,一个不在 session 中。如果您尝试更新
不在 session 中的对象,通常会引发异常(您现在正尝试将表示同一持久对象的两个对象附加到 session 中)。 SaveOrUpdateCopy()
将非 session 对象状态复制到 session 对象状态。
我不确定您将如何使用 NH,但在很多情况下您所需要的只是 Save()
。 session 正在执行所有必要的工作,以了解需要更新的内容,并且只需 Flush()
或 Commit()
即可完成您所需的一切。
关于nhibernate - SaveOrUpdate 与 NHibernate 中的更新和保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1150854/