あなたのアプリケーションはWebアプリケーションですか?
Session.Merge(object)
を使用します。
Webアプリケーションでは、時にはオブジェクトのシリアライズとデシリアライズを行います。新しいオブジェクトを作成するので、NHibernateオブジェクトが同じIDを持っていても、オブジェクト参照は異なります。次に、deシリアル化されたオブジェクトを更新しようとすると、NHibernateはIDが同じだが参照ポインタが異なる別のオブジェクトを検出するため、メモリ内のどのオブジェクトが「正しい」ものであるかわかりません。
Merge()メソッドがこのような場合に使用されるため、Webアプリケーション内のオブジェクトを更新できます。