nhibernate - SaveOrUpdate 与 NHibernate 中的更新和保存

标签 nhibernate

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/

相关文章:

hibernate - 在没有 .hbm 或 xml 文件的情况下在 NHibernate Fluent Mapping 中定义命名查询

nhibernate - 使用 NHibernate 查询

nhibernate - NInject 和 NHibernate,坐在树上

.net - 如何使用 NHibernate 进行分页?

wcf - 工厂被废弃,不能再使用。 NHibernate设施

c# - NHibernate 警告 Narrowing proxy to - this operation breaks ==

c# - nHibernate 在多个线程上枚举相同的集合

nhibernate - NHibernate 3.3 中的映射继承

NHibernate 属性公式过滤器

Nhibernate 不会从集合中删除 child