在我们项目研发的中,保证数据的完整性是很重要的事情,例如:存在两个表,订单表A和订单明细表B,表A的主键作为表B的外键,即新增订单数据的时候,是先新增订单表A,然后获取表A自增ID作为外键新增订单明细表B,假设新增表A的过程成功了,但新增表B的过程失败,为了确保数据完整性,需要把表A的这一条记录也记为失败,即是要么同时成功,要么同时失败,此时就需要用到事务处理,在事务代码块内,只要有报错事务会自动回滚,在最终检测都执行成功时提交事务即可,代码如下:
#region 企业端查看求职者联系方式,积分支付
/// <summary>
/// 企业端查看求职者联系方式
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult Insert_UserIntegra_And_ResumeDownloadInfo(string UserID, string ResumeID, string Integra)
{
using (TransactionScope ts = new TransactionScope())//使整个代码块成为事务性代码
{
#region 在这里编写需要具备Transaction的代码
try
{
UserID = DESEncrypt.Decrypt(UserID);
//新增用户套餐使用情况
int UserIntegra = DALMethod.intChaXunShuJu("LuoBinSong_API_Manage", new Dictionary<string, object> {
{ "@type","Insert_UserIntegraInfo"},
{ "@Integra",Integra},
{ "@UserID",UserID}
});
//新增下载简历
int DownLoadNum = DALMethod.intChaXunShuJu("LuoBinSong_API_Manage", new Dictionary<string, object> {
{ "@type","Insert_ResumeDownloadInfo"},
{ "@ResumeID",ResumeID},
{ "@UserID",UserID}
});
if (DownLoadNum > 0 && UserIntegra > 0)
{
RS.code = 200;
RS.message = "success";
ts.Complete();//提交事务
return Json(RS, JsonRequestBehavior.AllowGet);
}
else
{
RS.code = 404;
RS.message = "nofund";
return Json(RS, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
RS.code = 500;
RS.message = ex.ToString();
return Json(RS, JsonRequestBehavior.AllowGet);
}
#endregion
}
}
#endregion