C# 如何处理两个函数调用之间的数据

C# 如何处理两个函数调用之间的数据,c#,sql,asp.net-mvc,function,exception-handling,C#,Sql,Asp.net Mvc,Function,Exception Handling,我需要使用两个数据库函数,一个是删除注释,另一个是调用第二个函数来降低用户的分数 问题: 若在第二个功能中出现异常,则不会扣减分数,但删除注释 我正在尝试将第一个函数的操作存储在类对象中,若第二个函数发生异常,则将执行反向操作在数据库中重写它。是否有其他方法可以做到这一点,请建议我。 提前感谢您需要在同一事务的范围内进行两次数据库调用。因此,如果您得到一个异常,那么所有异常都将回滚 这取决于您访问数据库的方式,但可能是这样的: using (var Conn = new SqlConnectio

我需要使用两个数据库函数,一个是删除注释,另一个是调用第二个函数来降低用户的分数

问题: 若在第二个功能中出现异常,则不会扣减分数,但删除注释

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

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

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

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

}

如果这两个函数都应该被写入或邻接其中一个函数,则需要在这两个函数周围放置一个事务


如果您提交事务,注释和减少分数将保存在数据库中,如果您有异常,您可以执行回滚,但数据库中不会发生任何事情。

组合到一个函数以避免额外处理?在一个函数中,如果在执行第一个查询后发生异常,而不是…更新的答案,将其保留为更清晰的示例,但有几种很好的方法,详细的方法很容易遵循,但仍有改进的余地,这取决于您的需求,但应为您指明正确的方向