NHibernate永続化層のために私自身のIUnitOfWork
の実装を作ることを考えています。nhibernateで1つのセッション内で複数のトランザクションを実行できますか?それは悪い考えですか?
これを行う正しい方法は、ISession
とITransaction
をコンストラクタでインスタンス化し、デストラクタまたはDispose()
メソッドに配置することです。もちろん
、誰かがSave()
メソッドを呼び出す場合、ISession
がフラッシュされるだろうとSave()
を呼び出した後、Save()
に有効なオープン取引がありませんので、ITransaction
は再び、完全だろう...私は約束しない限り、直ちに別の新しい取引を開始しました。しかしこれは良い考えですか?
設計上、1つのコミット操作を行うのは理にかなっていますが、必ずしもコードを管理する必要はなく、他の開発者はUnitOfWorkパターンに従うことについてあまり訓練されません。
セッションごとに複数のトランザクションに対してUnitOfWorkが耐性を持てるようにして、何かを失う/獲得することはありますか?オープンなトランザクションをチェックして、新しいトランザクションを作成するのではなく、既にコミットされている場合は例外をスローする必要がありますか?
ウェブまたはデスクトップアプリ? – Phill
これはWebアプリケーション用に設計されています。 –