服务器端不同项目不同数据库通过webservice进行相互间的交易。using (TransactionScope ts = new TransactionScope())
{
 1. 调用webservice向数据库A插入数据
 2.查询刚才插入到数据库A的信息更新数据库B
}请教:
    1.因为第二步我需要第一步插入的数据,所以当前步骤1,webservice端也是个事务,会提交。如果第二步出错,当前只有第2步会回滚,请问可否实现1,2步都会滚,但是第二步时候能获得第一步插入的数据,这是否是脏读。
    2.如何保证webservice端全部插入数据后才执行第二步,因为无法获知webservice端是否已经执行完毕,现在经常导致第二步出错。难道要在A数据库循环查找所需数据是否都成功提交再执行第二步吗?

解决方案 »

  1.   

    没有现成的方法。即使是 TransactionScope 在你这个问题上也不过是个摆设。要想“理论化地”实现它,你需要自己设计事务程序,首先应该理解“数据库事务”的原理是什么,才能进一步去设计其程序。而你说的“难道要在A数据库循环查找所需数据是否都成功提交再执行第二步吗?”这个陈述根本不符合基本的数据库事务机制的概念,那你还是放弃吧。
      

  2.   

    http://www.cnblogs.com/freexiaoyu/archive/2011/09/09/2172889.html虽然不能完美解决,还是不错的.
      

  3.   

    不甚理解,还是分别解决当前问题吧。
    1.webservice端的交易是否可以在本地事务失败时回滚。同时让我想到“网上支付”的流程,如果有个本地事务他有3步,
         (1)选购商品;
         (2)网上支付;
         (3)更新用户选购信息;
    如果第三步出错,网上支付这步是如何实现回滚的?
    直接封装在using (TransactionScope ts = new TransactionScope()){}中即可吗?这应该不是嵌套事务吧?那webservice端的交易结构是怎么样的,请给个简单的例子明示。