session.BeginTransaction()和transaction.Commit()

时间:2009-10-27 10:20:42

标签: nhibernate transactions commit

我是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();

请指导。

谢谢!

2 个答案:

答案 0 :(得分:5)

不,没有交易就无法进行数据检索;所有NH运营都以交易为中心。

Ayende Rahien阅读本文。

答案 1 :(得分:3)

您应始终在查询中使用事务。不仅是出于性能而且出于并发原因,Ayende说明了这一点。

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