0

有没有办法在 NHibernate 中对“添加”操作进行排队,就像 Linq to SQL 和 Entity Framework 一样?

我想将实体添加到存储库,但我不想立即将其保存到数据库中,因为业务逻辑很复杂。我想在调用 ITransaction.Commit() 时提交所有更改,就像 Entity Framework 所做的那样。我可以这样做吗?

注意:我发现 NHibernate 会在我调用 ISession.Save() 方法后立即执行插入命令,这是意料之中的。

更新:我尝试将 FlushMode 设置为 Commit。但它仍然会立即保存实体,而不是在我调用 ITransaction.Commit() 时提交所有更改。

更新 2我在这里找到了原因http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-flushing:(一个例外是使用本机 ID 生成的对象在保存时被插入。)。所以我只能将Id生成器更改为“身份”以外的东西?没有其他类似EntityFramework中的解决方案吗?

4

2 回答 2

3

使用session.BeginTransaction()并阅读有关事务的信息。

于 2010-10-13T11:27:40.500 回答
2

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

更多关于这里: http: //fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html

于 2010-10-13T15:29:30.587 回答