1

SQL Server Compact不支持分布式事务。所以如果在TransactionScope中有多个连接 - 抛出异常。有没有什么办法可以将ADO.NET提供程序设置为使用同一个连接字符串的一个连接?TransactionScope和SQL Server Compact

我知道我可以通过connection.BeginTransaction使用常规事务,但TransactionScope对我来说更可取。

UPDATE
对不起,我没有提到我使用实体框架,所以我没有控制SQL命令。我可能只是传递连接字符串。由于某种原因,在TransactionScope中为一个连接字符串创建了多个连接对象。

+1

你能提供一些代码吗?您可以手动设置您的命令连接 – VMAtm

+0

更新了答案 – VMAtm

回答

2

更新答案(由here代码示例):

using (var context = new MyContext()) 
{ 
    using (var txscope = new TransactionScope()) 
    { 
     context.Connection.Open(); 
     // do query 1 
     // do query 2 
    } 
} 

更新

另一个解决方案,如你所说,是创建一个连接对象,并在构造函数中使用它对象上下文。

More information关于实体何时打开新连接。

+0

@all为什么downvote? – VMAtm

+0

但@Idsa在他的问题中使用了。它的工作,你可以从他自己的答案中看到! – VMAtm

+0

不知道。 Upvoted。您的解决方案将适用于一个ObjectContext。但是我需要通过几个ObjectContext进行一次连接,如下所示。但我会标记你的答案。 – SiberianGuy

1

我的错误是我将连接字符串传递给ObjectContext。如果我传递连接对象,则只使用一个连接。

相关问题