有没有办法在NHibernate中排队“添加”操作,就像Linq to SQL和Entity Framework一样?
我想在存储库中添加一个实体,但我不想立即将它保存到数据库中,因为业务逻辑很复杂。 我想在调用ITransaction.Commit()时提交所有更改,就像实体框架一样。我能这样做吗?
注意:我发现NHibernate会在调用ISession.Save()方法后立即执行插入命令,这是不期望的。
UPDATE:我尝试将FlushMode设置为Commit。但它仍然立即保存实体,而不是在我调用ITransaction.Commit()时提交所有更改。
更新2 我在http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-flushing找到了原因:(例外情况是,保存时会插入使用本机ID生成的对象。)。所以我只能将Id生成器更改为“身份”以外的其他内容?没有其他解决方案类似于EntityFramework中的解决方案?
答案 0 :(得分:3)
使用 session.BeginTransaction()并阅读有关交易的内容。
答案 1 :(得分:2)
这就是identity
的工作原理; session.Save返回POID,使用identity时获取它的唯一方法是执行实际插入。
此处有关于此的更多信息:http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html