如何创建新记录然后使用从数据库返回的新记录ID调用Web服务来执行数据库事务,该记录ID也将操作同一个数据库?我显然可以直接从同一个SQLConnection对象更新所有表,但Web服务调用中的逻辑可能会发生变化,我确实需要确保我的代码所做的更改与被调用的Web服务引入的更改一起提交。
答案 0 :(得分:4)
如果Web服务有责任操作数据库,我会扩展Web服务以执行代码正在执行的操作。使用Web服务的重点是(应该)将您的代码与必须直接处理数据库分开。在代码中引入直接数据库操作只会让事情变得更加复杂和难以维护。
答案 1 :(得分:0)
这不是您在实际交易中想要的东西。事务应该尽可能短,这意味着在它的中间没有用户交互,或者在这种情况下等待Web服务响应。
关于您的问题,如果您拥有对Web服务的控制权,则更改Web服务以进行执行整个事务的存储过程调用。如果每次调用服务时都必须完成某些操作,那么它们应该是服务的一部分。
我的猜测是,您无法控制Web服务,或者这不是问题。 Web服务如何访问数据库?如果它已经使用了存储过程,那么您应该能够在那里添加必要的逻辑。我再次猜测不是这种情况,或者它不会成为问题。我的建议是,如果可能的话,您尝试更改Web服务以适应该体系结构。
假设Web服务直接访问表(yuck),您需要将代码放入执行插入的调用代码中,调用Web服务,然后检查Web服务是否执行了它应该执行的操作,如果没有,那么您的代码将采取必要的操作来撤消所有内容。它基本上就像一个本土的交易引擎。它也非常混乱,往往容易出错,难以维护。更不用说,它不是100%全面证明。