SaveOrUpdate Vs更新和保存在NHibernate中

NHibernate中的SaveOrUpdate和Save / Update有什么区别。 为什么你只是总是使用SaveOrUpdate? 另外,SaveOrUpdateCopy有什么意义?

第9章比我更能涵盖所有这些:

http://nhibernate.info/doc/nh/en/index.html

但悬崖笔记:

Save()接受一个没有标识符的新对象并将其附加到会话中。 该对象将被INSERT

Update()采用一个现有对象,该对象具有一个标识符但不在会话中,并将其附加到会话中。 该对象将是UPDATE

SaveOrUpdate()查看标识符,并决定上面的必要条件。

SaveOrUpdateCopy()是特殊的,就是说你有两个具有相同标识符的对象 – 一个在会话中,一个不在。 如果您尝试update不在会话中的exception,则通常会引发exception(您现在正试图将两个代表相同持久对象的对象附加到会话中)。 SaveOrUpdateCopy()将非会话对象状态复制到会话对象状态。

我不确定你将如何使用NH,但是对于很多情况你只需要Save() 。 会话正在做所有必要的工作,以便知道必须更新什么,并且只需执行Flush()Commit()完成所需的一切。