大神们~跨数据库事务交易,求解释!

ysudongxi 2012-09-25 12:13:09
服务器端不同项目不同数据库通过webservice进行相互间的交易。

using (TransactionScope ts = new TransactionScope())
{
1. 调用webservice向数据库A插入数据
2.查询刚才插入到数据库A的信息更新数据库B
}

请教:
1.因为第二步我需要第一步插入的数据,所以当前步骤1,webservice端也是个事务,会提交。如果第二步出错,当前只有第2步会回滚,请问可否实现1,2步都会滚,但是第二步时候能获得第一步插入的数据,这是否是脏读。。。。
2.如何保证webservice端全部插入数据后才执行第二步,因为无法获知webservice端是否已经执行完毕,现在经常导致第二步出错。难道要在A数据库循环查找所需数据是否都成功提交再执行第二步吗?
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lei00529 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

不甚理解,还是分别解决当前问题吧。
1.webservice端的交易是否可以在本地事务失败时回滚。同时让我想到“网上支付”的流程,如果有个本地事务他有3步,
(1)选购商品;
(2)网上支付;
(3)更新用户选购信息;
如果第三步出错,网上支付这步是如何实现回滚的?
直接封装在using (TransactionScope ts = new Transa……
[/Quote]

这种不是通过 事务来控制的。
ysudongxi 2012-09-25
  • 打赏
  • 举报
回复
没人回答下啊。。版主~,大神们。
ysudongxi 2012-09-25
  • 打赏
  • 举报
回复
不甚理解,还是分别解决当前问题吧。
1.webservice端的交易是否可以在本地事务失败时回滚。同时让我想到“网上支付”的流程,如果有个本地事务他有3步,
(1)选购商品;
(2)网上支付;
(3)更新用户选购信息;
如果第三步出错,网上支付这步是如何实现回滚的?
直接封装在using (TransactionScope ts = new TransactionScope()){}中即可吗?这应该不是嵌套事务吧?那webservice端的交易结构是怎么样的,请给个简单的例子明示。
yzf86211861 2012-09-25
  • 打赏
  • 举报
回复
http://www.cnblogs.com/freexiaoyu/archive/2011/09/09/2172889.html

虽然不能完美解决,还是不错的.
  • 打赏
  • 举报
回复
如果你的问题陈述接近于数据库事务机制,就好象有了概念而欠缺的仅仅是一点点经验,再去讨论你的实现方法或许比较好。
  • 打赏
  • 举报
回复
没有现成的方法。即使是 TransactionScope 在你这个问题上也不过是个摆设。要想“理论化地”实现它,你需要自己设计事务程序,首先应该理解“数据库事务”的原理是什么,才能进一步去设计其程序。而你说的“难道要在A数据库循环查找所需数据是否都成功提交再执行第二步吗?”这个陈述根本不符合基本的数据库事务机制的概念,那你还是放弃吧。

61,653

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧