Collections TransactionScope和回滚对象状态

Collections TransactionScope和回滚对象状态,collections,state,transactionscope,Collections,State,Transactionscope,我正在寻找一个设计问题的解决方案。这需要解释一下。我会发布代码,但这会让它变得更长 我有一个自定义的通用集合,用于根据需要保存业务对象。为便于参考,请调用业务对象BO和通用集合GC。在GC中,我有一个私有的业务对象集合,这些对象已被标记为删除。将此私人收藏称为PDC 我可以在任何时候拥有任意数量的GC,每个GC都有自己的PDC,再加上不在任何集合中的其他BO 当我保存更改时,我循环所有BO和GC,并让每个BO和GC保存它们的更改。这发生在TransactionScope中,所以如果有任何内容无法

我正在寻找一个设计问题的解决方案。这需要解释一下。我会发布代码,但这会让它变得更长

我有一个自定义的通用集合,用于根据需要保存业务对象。为便于参考,请调用业务对象BO和通用集合GC。在GC中,我有一个私有的业务对象集合,这些对象已被标记为删除。将此私人收藏称为PDC

我可以在任何时候拥有任意数量的GC,每个GC都有自己的PDC,再加上不在任何集合中的其他BO

当我保存更改时,我循环所有BO和GC,并让每个BO和GC保存它们的更改。这发生在TransactionScope中,所以如果有任何内容无法正确保存,我将回滚数据库更改

当GC保存时,我对其PDC的状态有问题。GC首先保存带有更新的所有BO,然后删除PDC中与BO关联的记录,然后清除所有BO的PDC。我这样做是为了使GC的状态正确地反映数据库的新状态

现在假设一个BO或GC在一个或多个GC成功保存后未能保存。TransactionScope执行回滚。从数据库中删除的记录将被恢复,但部分/全部PDC已被清除,并且状态信息丢失

因此,我的问题是:如何在提交发生之前保留PDC信息,然后保证适当的收集被清除

TransactionScope没有我可以捕获的事件,以便在提交更改时通知我。任何给定的事务都可能影响许多BO和GC,因此我不能将事务限制为一次处理一个GC


有什么建议吗?

交易启动由交易经理提出,交易由交易本身完成

您可能希望GC实现;有一个例子可以帮助你


您可能还需要检查并确认。

这看起来很完美。谢谢你的链接。这应该能解决我的问题