NHibernate回滚似乎不起作用

本文关键字:不起作用 NHibernate | 更新日期: 2023-09-27 18:27:07

我的问题很简单。我有下面的代码,用户仍然被插入。当我在SaveOrUpdate之后(回滚之前)检查数据库时,我看到用户已经插入。这就像刷新模式和事务不起作用。我哪里错了?

using (var session = sessionFactory.OpenSession())
{
    session.FlushMode = FlushMode.Never;
    using (var tran = session.BeginTransaction())
    {
        var user = CreateUser();
        session.SaveOrUpdate(user);
        tran.Rollback();
    }
}

NHibernate回滚似乎不起作用

如果我们在SaveOrUpdate之后检查"。。。我们仍在进行一笔交易。在做出最终决定(提交或回滚)之前可能会发生很多事情。

其中一个操作将是来决定对象应该是Created还是Updated。因此,在ID生成器设置为native/inidentity(例如SQL server)的情况下,NHibernate必须执行INSERT才能获得ID。很多操作可能会推迟,但要接收ID,就没有办法等待了。

所以很可能你的身份证需要从数据库中获得。。这就是INSERT发生的原因但是在调用Flush()之前,其他内容不会写入数据库。。。所以,我不会把描述的行为标记为特别的东西。