2

コードの一部がトランザクションを開始せずにオブジェクトをデータベースに保存しようとした場合に、NHiberateを拡張して例外をスローできるかどうか疑問に思いました。トランザクションを開始することは、Save()を呼び出すための要件であるため、最初にトランザクションを開始せずにSave()を呼び出すプログラマーを見ることができません。

4

1 に答える 1

2

解決策は例外スローではありません。それは私たち(プロジェクトの開発者)に私たちがどこで行っているかを認識させることです

1)プロジェクト共有アプローチ。まず、アプリケーションのアーキテクチャがどのように機能するかをチームに説明します。これで、すべてのチームメンバーは、作業単位、または要求ごとのセッションパターンが設定されているはずです。

2)FlushMode。次に、Sessionオブジェクトの概念を説明します。ISession. Save()またはSQL実行またはUpdate()から遠く離れています。ISession.Flush()は何カウントですか。そして(最初のステップに基づいて)そのFlush()がいつ発生するかを決定できます。INSERTUPDATE

FlushModeをonCommitまたはNone(明示的な呼び出しを使用して)に設定することをお勧めします。そして、チームメンバーが書き込みコマンドを実行したい場合は、1つの標準的な場所、1つの一般的な方法(プロジェクトで使用)がガイドします。

呼び出しSession.Flush()はでラップする必要があります/します/しなければなりませんtransaction

于 2013-02-10T04:34:06.560 に答える