我是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();
请指导。
谢谢!
答案 0 :(得分:5)
不,没有交易就无法进行数据检索;所有NH运营都以交易为中心。
请Ayende Rahien阅读本文。
答案 1 :(得分:3)
您应始终在查询中使用事务。不仅是出于性能而且出于并发原因,Ayende说明了这一点。
如果您使用不在事务范围内的查询,他的Hibernate探查器会显示并发出警告。