SQL Server Compact不支持分布式事务。因此,如果TransactionScope中有多个连接 - 则抛出异常。有没有办法设置ADO.NET提供程序为同一个连接字符串使用一个连接?
据我所知,我可以通过connection.BeginTransaction使用常规交易,但对我来说,TransactionScope更受欢迎。
更新即可。
对不起,我没有提到我使用Entity Framework,所以我无法控制SQL Command。我可能只是传递连接字符串。由于某种原因,在TransactionScope内为一个连接字符串创建了几个连接对象。
答案 0 :(得分:2)
更新的答案(来自here的代码示例):
using (var context = new MyContext())
{
using (var txscope = new TransactionScope())
{
context.Connection.Open();
// do query 1
// do query 2
}
}
<强>更新强>
正如您所说,另一种解决方案是创建一个连接对象,并在对象上下文的构造函数中使用它。
More information关于实体何时开启新连接。
答案 1 :(得分:1)
我的错误是我将连接字符串传递给ObjectContext
。如果我传递连接对象,则只使用一个连接。