1 using (OMTransactionScope tran = new OMTransactionScope()) 2 { 5 6 //入库 7 if (Status.prams["归档"] != null) 8 { 9 10 StoreIn(iFormID, pfois); 11 } 12 13 //工作流相关 14 WFEAM_GiveBack_Apply wfBA = new WFEAM_GiveBack_Apply(daEAM_Giveback_Apply, Status.prams); 15 AppWorkFlow wf = AppWorkFlow.CreateSingleWorkFlow(wfBA, (System.Data.SqlClient.SqlTransaction)tran.Transaction, wfc); 16 17 int iResult = wf.Approval(buttonType, wnc_ID, Status.Name); 18 19 daEAM_Giveback_Apply.AP_State = Status.Value;//更改业务状态 20 daEAM_Giveback_Apply.AP_PostDate = DateTime.Now;//更改PostDate时间 --By Sid Mei 12.2.14 21 daEAM_Giveback_Apply.DB_UpdateEntityByCondition("", new string[] { "AP_State", "AP_PostDate" }); 22 23 //执行存储过程28 29 this.UpdateAssetAcceptSyn(dsSynbegin, int.Parse(htEntiy["iFormID"].ToString()).ToString(), tran); 30 31 //提交事务 32 tran.Complete();
代码是这样的,问:为什么有时候业务状态修改了,但入库StoreIn(iFormID, pfois);中需要修改的数据有部分为修改成功呢,StoreIn中也包含一个事物。。。
OMTransactionScope 是对 TransactionScope类的封装么? 是的话:Distributed Transaction Coordinator 这个服务要开启下...
这个服务开启了 。。
@kistliu: 操作的是同一个数据库么,是的话,要不就用数据库事务
@kistliu: 操作的是同一个数据库么,是的话,就直接用数据库事务。不是一个数据库的话,可以写两个数据库事务,一起提交、一起回滚。
@jingjunfeng:其中包含了两个数据库的操作。。现在关键是对同一个数据库中的处理的数据不一致。。
@kistliu: 那就把同一数据操作的 放到一个数据事务中,依靠数据库事务..
@jingjunfeng: 不行吧,我用的实体更新,并不是拼接sql
@kistliu: 需要修改的数据部分 是不是没有调用提交更新.
@jingjunfeng: 调用提交更新 指的什么?BatSaveByTagExtender()这就是更新批处理方法。
@kistliu: 很明显是调用了的。
哎,今天进来看下这个问题还没关,说明下,是另一个项目中需要同步数据的时候回写了这边的数据,我x。被坑了。