NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了
时间: 2023-12-08 20:06:46 浏览: 28
这种情况可能是由于NHibernate的缓存机制导致的。NHibernate有一个一级缓存(session cache),用于缓存已经查询过的实体对象,在同一个session中多次查询同一个实体对象时可以直接从缓存中获取,避免了多次查询数据库的开销。但是如果在同一个session中修改了一个实体对象但是没有提交事务,那么这个实体对象的缓存会被更新,此时再次查询同一个实体对象时会从缓存中获取到已经被修改的实体对象。
因此,在NHibernate中,如果需要使用事务,必须使用Transaction来管理事务的提交和回滚。在修改操作完成后,必须调用Transaction的Commit方法提交事务,否则修改操作不会生效。