【问题标题】:session.BeginTransaction() and transaction.Commit()session.BeginTransaction() 和 transaction.Commit()
【发布时间】:2010-12-10 10:26:21
【问题描述】:

我是 Nhibernate 的新手,所以我的查询对你来说可能是微不足道的。

我们一般在里面嵌入数据操作代码

  using (var session = sessionFactory.OpenSession())
  {
    using (var transaction = session.BeginTransaction())
    {
       ...Code for CRUD operations
       transaction.Commit();
    }
  }

因为我们一般 BeginTransaction/Commit/Rollback 用于保存/更新/删除数据,

我想知道是否需要 BeginTransaction()Commit() 即使我正在使用检索数据 session.Get<T>(id);session.CreateCriteria<T>().List();

请指导。

谢谢!

【问题讨论】:

    标签: nhibernate transactions commit


    【解决方案1】:

    您应该始终在查询中使用事务。不仅是为了性能,也是为了并发性的原因,Ayende 谈到了这一点。

    如果您使用不在事务范围内的查询,他的 Hibernate 分析器会显示并发出警报。

    【讨论】:

      【解决方案2】:

      不,你不能在没有事务的情况下进行数据检索;所有 NH 操作都以事务为中心。

      通过Ayende Rahien阅读这篇文章。

      【讨论】:

      • 但是他不是说你应该在 NH 的每个操作中使用事务吗?你为什么说“不”?
      • @HeavyWave:我的意思是“不,没有交易你不能这样做”,我猜我读错了。
      猜你喜欢
      • 2012-04-27
      • 2010-11-22
      • 2011-06-28
      • 2014-08-03
      • 1970-01-01
      • 2013-01-15
      • 2012-05-09
      • 2020-03-28
      相关资源
      最近更新 更多