我遇到了一个问题,我不确定如何解决这个问题,我想知道为了完成这项任务我应该考虑的最佳方法是什么。
我们正在开发一个应用程序 VB.net 2.0 和 SQL 2005。允许用户根据可能包含许多已接收商品的购买取消接收。但是,在取消的过程中,会向用户提出一些问题,例如“您要取消 Good #1”。如果是,请删除。然后,“你想取消Good#2”,不,不要删除,再问一个问题(如果收到的项目发出,必须由用户手动进行一个过程)。而且,最后,如果所有货物都成功取消,我们必须取消接收本身。但是有时候,如果在这个过程中曾经向用户询问过错误或某些情况发生,我们希望取消从一开始所做的任何动作,并使其恢复到原来的状态。于是我想了想Transaction
。
我知道有可以使用的 SQL 事务,并且我知道如何使用它,但我不能真正使用它,因为用户必须执行可能取消此事务的操作。
我还记得.NET 2.X 中的TransactionScope,它可以实现类似的功能,我也知道如何使用它。问题来自 TransactionScope 和 MSDTC。使用它时,我们仍然收到错误消息:
分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。
我已经尝试过在另一个堆栈帖子中描述的内容并且效果很好......直到用户重新启动他们的计算机。每次用户重新启动计算机时,他们都必须恢复价值。另外,默认情况下,没有计算机将此值设置为“开”。至少有 10 个计算机基地没有被激活。大约有 300 台计算机安装了这个程序,所以这肯定不是好事。
所以有人知道我如何实现这一目标吗?还有什么其他东西可以通过我可以使用的代码进行交易吗?
NOTE1:我知道有人会说,首先向用户询问条件并在内存中维护值。完成后,如果一切顺利,请使用删除。但是,如果在删除商品 #4 时发生错误怎么办?以及如何为存储程序提供要删除的商品的动态列表?
注2:对不起我的英语,我通常说法语。
注 3:C# 中的任何示例也可以提供,因为我知道 VB 和 C#。