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

Nhibernate 我是否需要使用session.Flush进行删除?,nhibernate,Nhibernate,我想先发封电子邮件。如果不成功,我将从数据库中删除 这是我的密码 if (EmailAllPosts) emailStatus = ProcessEmailAllPosts(userAlert, emailModel, ps, defaultAdminEmail, fileURL); if ((alertType == (int)Defines.AlertType.Email) && !email

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

这是我的密码

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

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

这取决于刷新模式

使用“从不”,您需要自己发布冲水

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


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

回答得好。delete是ISession的API方法。它与SQL DELETE语句无关。除非刷新会话,否则永远不会执行SQL删除