4

我需要使用两个数据库函数,其中一个我需要删除评论,然后调用第二个函数来降低用户的分数。

问题:如果第二个功能出现异常,不扣分,但评论被删除。

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

4

2 回答 2

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;
    }

}
于 2012-12-13T08:50:28.327 回答
1

如果这两个函数都应该被编写或者更接近其中一个,你需要在这两个函数周围放置一个事务。

如果您提交事务,评论和减少分数将保存在数据库中,如果您有异常,您可以执行回滚并且数据库中没有任何反应。

于 2012-12-13T08:51:50.277 回答