C# NHibernate回滚似乎不起作用
我的问题很简单。我有下面的代码和用户仍然插入。当我在C# NHibernate回滚似乎不起作用,c#,mysql,nhibernate,C#,Mysql,Nhibernate,我的问题很简单。我有下面的代码和用户仍然插入。当我在保存或更新之后(回滚之前)检查数据库时,我看到用户已经插入。这就像刷新模式和事务不工作一样。我哪里做错了 using (var session = sessionFactory.OpenSession()) { session.FlushMode = FlushMode.Never; using (var tran = session.BeginTransaction()) { var user = C
保存或更新之后(回滚之前)检查数据库时,我看到用户已经插入。这就像刷新模式和事务不工作一样。我哪里做错了
using (var session = sessionFactory.OpenSession())
{
session.FlushMode = FlushMode.Never;
using (var tran = session.BeginTransaction())
{
var user = CreateUser();
session.SaveOrUpdate(user);
tran.Rollback();
}
}
如果我们在保存或更新之后选中“。。。我们仍在进行一笔交易。在最终决定(提交或回滚)之前可能会发生很多事情
其中一个操作是决定是否创建对象
或更新对象。因此,如果将ID生成器设置为native/identity(例如SQL server),则NHibernate必须执行插入以获取ID。许多操作可能会延迟,但要接收ID,则无法等待
因此,您的ID很可能需要从DB获取。。这就是插入发生的原因但是在调用Flush()
之前,其他内容不会写入数据库。。。因此,我不会将所描述的行为标记为特殊行为。根据您的描述,当您尚未实际执行回滚时,不要声称回滚被破坏。这是因为我的表使用的是不支持事务的MyISAM引擎。事实证明我需要使用InnoDB引擎。无论如何,谢谢你的帮助。