如何在NHibernate中添加添加操作的队列?

时间:2010-10-13 11:25:27

标签: .net nhibernate orm isession

有没有办法在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中的解决方案?

2 个答案:

答案 0 :(得分:3)

使用 session.BeginTransaction()并阅读有关交易的内容。

答案 1 :(得分:2)

这就是identity的工作原理; session.Save返回POID,使用identity时获取它的唯一方法是执行实际插入。

此处有关于此的更多信息:http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html