我是NHibernate的新手。
我使用事务提交数据。如果发生错误,我将打开新事务并将错误数据插入数据库。不行
例如:我犯下mydata
,发生 error1 。我回滚事务并开始新的事务以保存错误日志。当我将错误日志提交到数据库时,它仍然抛出 error1 。
这是我的代码:
using (ITransaction transaction = _session.BeginTransaction())
{
try
{
var inserted = _session.Save(mydata);
// first commit
transaction.Commit();
}
catch (Exception ex)
{
// "Cannot insert duplicate key row in object" error occurs.
transaction.Rollback();
using (ITransaction errTransaction = _session.BeginTransaction())
{
try
{
ErrorLogs errorLog = new ErrorLogs();
errorLog.ErrorMessage = ex.Message;
_session.Save(errorLog);
// second commit
errTransaction.Commit(); // it's not work
// When I commit, previous error ("Cannot insert duplicate...") occurs again.
}
catch (Exception ex2)
{
throw ex2;
}
}
throw ex;
}
}
我使用Sql Profiler查看生成的tsql。在第一次提交时,执行了插入我的数据语句。在第二次提交时,执行了插入错误日志语句,并再次执行了插入我的数据语句。 请帮我解释为什么会发生这种情况。