我是否需要使用session.Flush进行删除?

时间:2013-09-26 17:11:43

标签: nhibernate

我想先发一封电子邮件。如果不成功,我将从数据库中删除。

这是我的代码

        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进行删除?

2 个答案:

答案 0 :(得分:3)

这取决于你的FlushMode。

使用Never,你需要自己发出冲洗。

使用Auto,NHibernate将处理这些内容,即在提交事务之前或当您要求它查询数据库时。

使用Commit,NHibernate将在提交时刷新。没有提交,没有刷新。

答案 1 :(得分:0)

假设您正确使用会话(这意味着:对于单个操作,在单个线程中,获取同一会话中使用的所有数据,最后提交显式事务) - 。在这种情况下,无需调用Flush甚至Update - 默认情况下,NHibernate会在事务提交之前或在查询可能相关的数据之前刷新对数据库的所有更改。