我需要使用两个数据库函数,其中一个我需要删除评论,然后调用第二个函数来降低用户的分数。
问题:如果第二个功能出现异常,不扣分,但评论被删除。
我正在尝试在类对象中存储第一个函数的操作,如果第二个发生异常,将执行反向操作以将其重写到数据库中。有没有其他方法可以做到这一点,请建议我。提前致谢
我需要使用两个数据库函数,其中一个我需要删除评论,然后调用第二个函数来降低用户的分数。
问题:如果第二个功能出现异常,不扣分,但评论被删除。
我正在尝试在类对象中存储第一个函数的操作,如果第二个发生异常,将执行反向操作以将其重写到数据库中。有没有其他方法可以做到这一点,请建议我。提前致谢
您需要在同一事务的范围内进行两个数据库调用。因此,如果您遇到异常,所有内容都将回滚。
这取决于您如何访问数据库,但可能是这样的:
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;
}
}
如果这两个函数都应该被编写或者更接近其中一个,你需要在这两个函数周围放置一个事务。
如果您提交事务,评论和减少分数将保存在数据库中,如果您有异常,您可以执行回滚并且数据库中没有任何反应。