1

我在事务和会话范围内的方法 create 遇到问题,因为数据库中的表有一个触发器。有什么建议吗?

这是我得到的错误:

尝试处理事务时发生错误
描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Exception:尝试处理事务时发生错误

观察。

如果我删除触发器,则没有错误。

代码:

using (var session = new SessionScope())
{
   try
   {
      using (Transaction = new TransactionScope(TransactionMode.New,  OnDispose.Commit))
      {
        class.Create();
      }
      Transaction.VoteCommit();
   }
   catch (Exception ex)
   {
      Transaction.VoteRollBack();
      throw new Exception(ex.Message);
   }
}
4

1 回答 1

1

我认为问题在于 using 语句的位置:

using (var session = new SessionScope())
{
    using (Transaction = new TransactionScope(TransactionMode.New,  OnDispose.Commit))
    {
        try
        {
            class.Create();
            Transaction.VoteCommit();
        }
        catch (Exception ex)
        {
            Transaction.VoteRollBack();
            throw new Exception(ex.Message);
        }
    }
}

在调用 Commit 或 Rollback 之前处理 Transaction。

于 2013-08-12T17:30:48.500 回答