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();
}
}
如果我们在SaveOrUpdate
之后检查"。。。我们仍在进行一笔交易。在做出最终决定(提交或回滚)之前可能会发生很多事情。
其中一个操作将是来决定对象应该是Created
还是Updated
。因此,在ID生成器设置为native/inidentity(例如SQL server)的情况下,NHibernate必须执行INSERT才能获得ID。很多操作可能会推迟,但要接收ID,就没有办法等待了。
所以很可能你的身份证需要从数据库中获得。。这就是INSERT发生的原因但是在调用Flush()
之前,其他内容不会写入数据库。。。所以,我不会把描述的行为标记为特别的东西。