ビジネスロジックの検証を担当するサービスオブジェクトがあります。Update to repositoryを発行する前に、それが機能するエンティティがいくつかのビジネスルールに準拠しているかどうかをチェックします。
チェックする必要があるルールの1つは、データベースにあるエンティティと比較したときに、エンティティのStatusプロパティが変更されていないかどうかです。同じISessionを共有するリポジトリを使用しているため、データベースからエンティティを取得しようとすると、比較用のオブジェクトを取得します。
if (fromDbEntity.Status != entity.Status) throw new Exception("Cannot change status...");
私は常に第1レベルのキャッシュにあるfromDbEntityを取得するので、同じオブジェクトで作業します。
NHibernate / Repositoryがすでにセッションのスコープ内にある場合でも、データベースからエンティティを取得するように強制する方法はありますか?