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

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

于 2013-09-26T19:33:11.057 回答