NHibernate を ORM レイヤーとして使用して大規模なアプリケーションを構築しています。できるだけ多くのベスト プラクティスを適用しようとしましたが、その中で に設定FlushMode
しましたNever
。ただし、これは私たちに苦痛を与えています。たとえば、次のシナリオです。
終了日の列を持つテーブルがあります。このテーブルから、最後の (終了日までの) レコードを削除します。
- レコードが削除されます。
- 削除後、(終了日までに) 最後のレコードの (リポジトリ) クエリを実行します。
- この最後のレコードは、新しいアクティブ レコードであるため更新されます。
これは非常に単純なシナリオであり、多くのシナリオが存在します。ここでの問題は、クエリを実行すると削除されたレコードが返されることですが、これはもちろん正しくありません。これは、挿入または削除されるエンティティに触れる可能性のあるビジネス ロジックでクエリを実行できないことを大まかに意味します。まだそこにないか、まだそこにいます。
このシナリオでどのように作業できますか? 設定を元に戻さずにこれを回避する方法はありますか、それとも設定をすべてFlushMode
あきらめるべきですか?FlushMode