2

如何执行数据库事务,在其中创建新记录,然后使用从数据库返回的新记录 ID 调用 Web 服务,该 ID 也将操作同一个数据库?我显然可以直接从同一个 SQLConnection 对象更新所有表,但是 Web 服务调用中的逻辑可能会发生变化,我确实需要确保我的代码所做的更改与被调用的 Web 服务引入的那些更改一起提交。

4

2 回答 2

4

如果 Web 服务负责操作数据库,我会扩展 Web 服务以执行您的代码正在执行的操作。使用 Web 服务的目的是(应该)将您的代码与直接处理数据库分开。在你的代码中引入直接的数据库操作只会让事情变得更加复杂和难以维护。

于 2008-10-10T14:18:46.940 回答
0

这不是您在实际交易中想要的东西。事务应该尽可能短,这意味着中间没有用户交互,或者在这种情况下等待 Web 服务响应。

至于您的问题,如果您可以控制 Web 服务,则更改 Web 服务以进行执行整个事务的存储过程调用。如果每次调用服务时都必须完成某些操作,那么它们应该是服务的一部分。

我的猜测是您无法控制 Web 服务,否则这不是问题。Web 服务如何访问数据库?如果它已经在使用存储过程,那么您应该能够在其中添加必要的逻辑。再说一次,我猜情况并非如此,否则不会有问题。我的建议是,如果可能的话,您尝试更改 Web 服务以适应该架构。

假设 web 服务直接访问表 (yuck),您需要将代码放入执行插入的调用代码中,调用 web 服务,然后检查 web 服务是否完成了它应该做的事情,如果然后您的代码没有采取必要的措施来撤消所有操作。它基本上就像一个本土的交易引擎。它也非常混乱,并且容易出错且难以维护。更不用说,它不是 100% 完整的证明。

于 2008-10-10T14:29:38.587 回答