1

まずはメールを送りたい。うまくいかない場合は、データベースから削除します。

これが私のコードです

        if (EmailAllPosts)
            emailStatus = ProcessEmailAllPosts(userAlert, 
            emailModel, ps, defaultAdminEmail, fileURL);

        if ((alertType == (int)Defines.AlertType.Email) && !emailStatus)
        {
            session.Delete(userAlert);
        }
        else
        {
            userAlert.IsAlertSent = true;
            session.Update(userAlert);
        }
        session.Flush();

削除に session.Flush を使用する必要がありますか?

4

2 に答える 2

3

FlushMode によって異なります。

Never では、自分でフラッシュを発行する必要があります。

Auto を使用すると、NHibernate がその処理を行います。つまり、トランザクションをコミットする前、または何かについてデータベースにクエリを実行するように依頼したときです。

Commit を使用すると、NHibernate はコミット時にフラッシュします。コミットなし、フラッシュなし。

于 2013-09-27T04:00:38.930 に答える
0

セッションを適切に使用すると仮定します (つまり、単一の操作で、単一のスレッドで、同じセッションで使用されるすべてのデータをフェッチし、最後に明示的なトランザクションをコミットします) - no . 呼び出す必要はありません。その場合FlushでもUpdate、NHibernate はデフォルトで、トランザクションをコミットする前、または関連する可能性のあるデータをクエリする前に、すべての変更をデータベースにフラッシュします。

于 2013-09-26T19:33:11.057 に答える