对不起长的主题名称...
如果我执行以下操作:
using (var transaction = session.BeginTransaction())
{
// do something
transaction.Commit();
}
如果我的做某事导致异常,它会自动回滚,还是我需要明确检查如下:
using (var transaction = session.BeginTransaction())
{
try
{
// do something
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
}
}
答案 0 :(得分:14)
如果提交在使用块中失败,可以安全地回滚事务。
ITransaction
在幕后包装ADO.NET事务,因此它取决于提供者特定的实现。我检查的源代码中的Dispose
方法(2.1)假定在内部Dispose
上调用IDbTransaction
将其回滚。