如何一个接一个地处理两个函数调用之间的数据

时间:2012-12-13 08:46:00

标签: c# sql asp.net-mvc function exception-handling

我需要使用两个数据库函数,其中我需要删除注释,然后调用第二个函数,这会降低用户的分数。

问题: 如果在第二个功能中发生异常,则不会扣除分数,但删除了评论。

我在类对象中尝试第一个函数的存储操作,如果在第二个函数中发生异常,则会发生反向操作以在数据库中重写它。有没有其他方法可以做到这一点请建议我。 提前谢谢

2 个答案:

答案 0 :(得分:2)

您需要在同一事务的范围内进行两个数据库调用。因此,如果您收到异常,则所有异常都将被回滚。

这取决于您访问数据库的方式,但可能是这样的:

using (var Conn = new SqlConnection(_ConnectionString))
{
    SqlTransaction trans = null;
    try
    {
        Conn.Open();
        trans = Conn.BeginTransaction();

        using (SqlCommand Com = new SqlCommand(ComText, Conn, trans))
        {
                    // delete comment
                    // update score
         }
         trans.Commit();
      }
    catch (Exception Ex)
    {
        if (trans != null) trans.Rollback();
        return -1;
    }

}

答案 1 :(得分:1)

如果两个函数都应该写入或更新,则需要在两个函数周围进行事务处理。

如果您提交了该事务,则评论和评分将保存在数据库中,如果您有例外,则可以进行回滚,数据库中没有任何操作。