コードの一部がトランザクションを開始せずにオブジェクトをデータベースに保存しようとした場合に、NHiberateを拡張して例外をスローできるかどうか疑問に思いました。トランザクションを開始することは、Save()を呼び出すための要件であるため、最初にトランザクションを開始せずにSave()を呼び出すプログラマーを見ることができません。
質問する
105 次
1 に答える
2
解決策は例外スローではありません。それは私たち(プロジェクトの開発者)に私たちが何をどこで行っているかを認識させることです
1)プロジェクト共有アプローチ。まず、アプリケーションのアーキテクチャがどのように機能するかをチームに説明します。これで、すべてのチームメンバーは、作業単位、または要求ごとのセッションパターンが設定されているはずです。
2)FlushMode。次に、Sessionオブジェクトの概念を説明します。ISession. Save()
またはSQL実行またはUpdate()
から遠く離れています。ISession.Flush()は何カウントですか。そして(最初のステップに基づいて)そのFlush()がいつ発生するかを決定できます。INSERT
UPDATE
FlushModeをonCommit
またはNone
(明示的な呼び出しを使用して)に設定することをお勧めします。そして、チームメンバーが書き込みコマンドを実行したい場合は、1つの標準的な場所、1つの一般的な方法(プロジェクトで使用)がガイドします。
呼び出しSession.Flush()
はでラップする必要があります/します/しなければなりませんtransaction
。
于 2013-02-10T04:34:06.560 に答える