亚音速:使用SharedDbConnectionScope和TransactionScope似乎被打破了

时间:2009-08-07 05:09:28

标签: c# subsonic

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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