亚音速:将SharedDbConnectionScope与TransactionScope一起使用似乎已被打破

使用下面的代码,预期的行为是数据库不会反映更新,因为永远不会调用ts.Complete(),但更新似乎会通过。 但是,如果我省略SharedDbConnectionScope,则可以看到预期的行为。 SharedDbConnectionScope有问题吗? 顺便说一句,我使用的是Subsonic 2.2

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope()) { using (TransactionScope ts = new TransactionScope()) { // update here } } 

发现了问题。 Subsonic上的文档似乎是错误的。 如果我将TransactionScope包装在SharedDbConnectionScope上,那么它可以正常工作。 正确的方法应该是:

 using (TransactionScope ts = new TransactionScope()) { using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope()) { // update here } } 

编辑:正如firestorm所述,SharedDbConnectionScope似乎不适用于Subsonic 2.2。 所以唯一的解决方案似乎是安装MsDts而不使用SharedDbConnectionScope。

我认为SharedDbConnectionScope在Subsonic 2.2中根本不起作用。 就我可以看到的对象而言,整个想法是当你使用它时,你不需要在服务器上安装MsDts。 我根本无法工作! 当您安装MsDts时,您不再需要SharedDbConnectionScope,这就是为什么您的代码在TransactionScope之后创建时的工作原理。