使用下面的代码,预期的行为是数据库不会反映更新,因为永远不会调用ts.Complete(),但更新似乎已经完成。但是,如果我省略SharedDbConnectionScope,则可以看到预期的行为。 SharedDbConnectionScope有问题吗?顺便说一下,我正在使用Subsonic 2.2
using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())
{
using (TransactionScope ts = new TransactionScope())
{
// update here
}
}
答案 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之后创建代码时的工作原理。