C/S开发框架事务处理机制


关于事务处理机制
开发框架支持事务处理,在DAL层提交数据时可以自己控制事务的开始,提交和回滚。
dalBase类定义成员变量 _UserManualControlTrans 标记(开关):
True表示由自己控制事务提交数据。
False表示由框架自行启动,提交和回滚事务,预设值为False。
举例说明
假设要求在保存采购订单的同时更新库存数据,这里需要在同一事务内完成,实现如下:
采购订单DAL层提交数据代码:
/// <summary>
/// 提交采购订单资料。此方法演示用户自己控制事务。
/// </summary>
/// <param name="data">数据集</param>
/// <returns></returns>
public override SaveResult Update(DataSet data)
{
_UserManualControlTrans = true;//自己控制事务
try
{
this.BeginTransaction(); //手工启用事务
SaveResult mResult = base.Update(data); //调用基类的方法提交数据。
//提交数据后,在同一事务内调用后台的存储过程更新库存信息。
DataProvider.Instance.ExecuteSQL(_CurrentTrans, "usp_TestUpdateStock");
//同一事务内处理更多的数据。
DataProvider.Instance.ExecuteSQL(_CurrentTrans, "usp_TestUpdateOther");
this.CommitTransaction();//提交事务
return mResult;
}
catch (Exception ex)
{
this.RollbackTransaction();//事务回滚
throw ex;
}
}

扫一扫加微信

