我的问题与使用nhibernate交易有关
问题低于transaction.Begin()
吗?或者只是多余的?
using (var transaction = session.BeginTransaction())
{
transaction.Begin();
action();
transaction.Commit();
}
答案 0 :(得分:8)
检查来源后,transaction.Begin()
实际上是多余的 - 无害的无操作。
答案 1 :(得分:3)
beginTransaction
因为它开始交易,
如果null将创建一个,那么
session.Transaction
将返回当前活动的事务。
NHibernate会话跟踪当前活动(未提交或 回滚)交易。
如果在尚未进行任何交易时致电ISession.Transaction
会议将在会议期间创建
在该时间点创建一个新的事务对象,但不会开始
还没完成。当您致电ISession.BeginTransaction
时,会话将会看到
如果它们已经是之前创建的事务对象,
但尚未完成。如果是这样,它将返回此事务对象。
如果没有,它将创建一个新的事务对象,开始它并存储一个
引用这个新对象。
在事务完成时,事务对象通知会话
它已经完成的所有,会议将在该会议上完成
释放它对事务对象的引用。以下任何电话
ISession.Transaction
或ISession.BeginTransaction
会导致{。}}
创建一个新的交易对象。
NHibernate不支持重用事务对象 一个事务(这种行为可能与Hibernate不同,后者 似乎支持重用事务对象。)
参考this文件。