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