システム全体を NH1.2 から NH3.3 にアップグレード中です。(以前の開発者による) システムの一般的なシナリオは、多数のオブジェクトをデタッチしてそれらを Web セッションに格納し、IHttpModule を介して要求ごとにアタッチすることでした。
NHProf を実行している単純なページの読み込みで、これらのオブジェクトが現在アタッチされているため、変更されていないにもかかわらず、データベースで更新されるようになっていることに気付きました。
添付する以前のコード (NH1.2) は、次の行に沿っていました。
if (((NHibernate.Impl.SessionImpl)session).IsSaved(obj) session.Lock(obj, LockMode.None)
IsSaved が削除されたように見えるため、コードは次のようになります。
もし (obj != null) session.Lock(obj, LockMode.None)
私の理解では、LockMode.None によってデータベースが更新されるべきではないということでした。一部のオブジェクトにはバージョンがあり、他のオブジェクトにはありません。どちらも更新中です。
アドバイスをいただければ幸いです。