[求助]C#如何写嵌套事务
背景:
表:订单表 order
订单分录: orderentry
实现需求:订单表记录的是表头信息,订单分录表记录的是订单的详细信息。分录表与订单表用一个字段关键。order表对应多个分录。
订单表主要字段:订单总金额,订单总数量
订单分录表中字段:分录金额,分录数量,分录单价
当增加一条分录时,订单表中的总金额要自动增加所有分录的金额,所以这需要一个事务。
我的疑问是:后一条更新语句不能获取刚刚插入的记录。有什么办法呢?嵌套事务?不想用分布式事务。
表:订单表 order
订单分录: orderentry
实现需求:订单表记录的是表头信息,订单分录表记录的是订单的详细信息。分录表与订单表用一个字段关键。order表对应多个分录。
订单表主要字段:订单总金额,订单总数量
订单分录表中字段:分录金额,分录数量,分录单价
当增加一条分录时,订单表中的总金额要自动增加所有分录的金额,所以这需要一个事务。
myConn.Open();
myTrans = myConn.BeginTransaction();
try
{
EPaybill = MPaybill.SelectByID(paybillEntry.FPARENTID); //订单表头记录
MPaybillEntry.Insert(myTrans, paybillEntry); //插入订单分录
EPaybill.FPASSTOTALAMOUNT = this.GetOrderTotalAmount(paybillEntry.FPARENTID); // 获取订单总金额
// 现在的问题是:在此这前事务还没提交,无法获取刚插入的记录,这里是不是需要嵌套事务?
MPaybill.Update(myTrans, EPaybill);
myTrans.Commit();
}
catch (Exception e)
{
bRetVal = false;
strFailedRetMess = Resources.MESSAGE_TRANS_FAILED;
myTrans.Rollback();
}
finally
{
myTrans.Dispose();
myConn.Close();
}
return bRetVal;
}
我的疑问是:后一条更新语句不能获取刚刚插入的记录。有什么办法呢?嵌套事务?不想用分布式事务。
...全文
相关推荐
C# 隐写术 文件隐写 密码隐写 保证运行正常
C# 隐写术 文件隐写 密码隐写 保证运行正常,使用winfrom的形式进行隐写,非常好用。属于安全技术
VC调用C#写的DLL
这个例子很好解决了, VC和C#之间的互调的问题
C#关于类的只读只写属性实例分析
C#中属性的目的是对字段的封装,是为了程序数据的安全性考虑的。本文即以实例形式对C#中只读只写属性进行剖析。 对于只读或只写的属性定义: 1、不写入其中一个get\set方法即可只读或只写 比如: private int a; public int A{ get { return a; } } 2、用private进行保护,类外同样意味着只读或只写 比如: private int a; public int A{ private get { return a; } set { a = value; } } 这里需要注意的是,这样定义的属性是在 C# 3.0 和更高版
用C#写的一个小游戏
一个用C#写的简易游戏,挂机各种功能一个用C#写的简易游戏,挂机各种功能
读者写者问题(C#版).rar
操作系统课程设计-读者写者问题,用C#实现的,可视化运行


