10

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

请指导。

谢谢!

4

2 回答 2

6

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

阅读Ayende Rahien的这篇文章。

于 2009-10-27T10:25:44.937 回答
3

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

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

于 2009-10-27T11:17:00.793 回答