NHOrnateでのSaveOrUpdateとSave/Updateの違いは何ですか? SaveOrUpdateを常に使用しないのはなぜですか?また、SaveOrUpdateCopyのポイントは何ですか?
第9章では、これらすべてについて、私ができる以上のことを説明しています。
http://nhibernate.info/doc/nh/en/index.html
しかし、崖のメモ:
Save()
は、識別子のない新しいオブジェクトを取得し、セッションにアタッチします。オブジェクトはINSERT
'dになります。
Update()
は、識別子はあるがセッション内にない既存のオブジェクトを取得し、セッションにアタッチします。オブジェクトはUPDATE
'dになります。
SaveOrUpdate()
は識別子を見て、上記で必要なものを決定します。
SaveOrUpdateCopy()
は、同じ識別子を持つ2つのオブジェクト(セッションにあるオブジェクトとないオブジェクト)があるという点で特別です。セッションにないupdate
を試みると、例外が通常どおりスローされます(同じ永続オブジェクトを表す2つのオブジェクトをセッションにアタッチしようとしています)。 SaveOrUpdateCopy()
は、非セッションオブジェクト状態をセッションオブジェクト状態にコピーします。
NHをどのように使用するかはわかりませんが、多くの場合、必要なのはSave()
だけです。セッションは、何を更新する必要があるかを知るために必要なすべての作業を行っており、単にFlush()
またはCommit()
が必要なすべてを行います。