【问题标题】:How to Queue The Add Operation in NHibernate?如何在 NHibernate 中排队添加操作?
【发布时间】:2010-10-13 11:25:26
【问题描述】:

有什么方法可以排队 NHibernate 中的“添加”操作,就像 Linq to SQL 和 Entity Framework 一样?

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

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

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

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

【问题讨论】:

    标签: .net nhibernate orm isession


    【解决方案1】:

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

    【讨论】:

    • 我的意思是,NHibernate 在我调用 transaction.Commit() 之前发出一个 INSERT sql 命令,这不是我想要的。我希望它仅在我调用 transaction.Commit() 时才发出 sql 命令。
    【解决方案2】:

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

    在此处了解更多信息:http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2013-03-30
      • 1970-01-01
      • 2016-08-24
      • 2010-11-21
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多