最近在做一个电商项目,其中有个场景相信大家都会遇到,就是在新增订单的时候,同时需要新增相应的订单商品。这种场景很常见,新增订单是其中的一个实例,总结起来就是,当需要对某条记录的进行做出变化时候,相关联的数据需要作出相应的变动,这时候就需要用到事务进行控制数据的准确性、一致性。
这里使用Transactions类来实现的,以下是具体代码:
TB_Order_OrderProduct_BLL ProBll = new TB_Order_OrderProduct_BLL();
public bool Add(TB_Order_Order entity, List<TB_Order_OrderProduct> Prolist)
{
TransactionOptions transactionOption = new TransactionOptions();
//设置事务隔离级别
transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
// 设置事务超时时间为60秒
transactionOption.Timeout = new TimeSpan(0, 0, 60);
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
{
try
{
if (Add(entity))
{
Prolist.ForEach(a => { a.OrderID = entity.Id; });
foreach (TB_Order_OrderProduct item in Prolist)
{
ProBll.Add(item);
}
scope.Complete();
return true;
}
return false;
}
catch (Exception ex)
{
throw new Exception("发送信息异常,原因:" + ex.Message);
}
finally
{
//释放资源
scope.Dispose();
}
}
}
文笔不好,详细就看代码吧!