TransactionScope和SQL Server Compact

时间:2011-07-14 08:32:34

标签: .net sql-server entity-framework transactionscope distributed-transactions

SQL Server Compact不支持分布式事务。因此,如果TransactionScope中有多个连接 - 则抛出异常。有没有办法设置ADO.NET提供程序为同一个连接字符串使用一个连接?

据我所知,我可以通过connection.BeginTransaction使用常规交易,但对我来说,TransactionScope更受欢迎。

更新即可。
对不起,我没有提到我使用Entity Framework,所以我无法控制SQL Command。我可能只是传递连接字符串。由于某种原因,在TransactionScope内为一个连接字符串创建了几个连接对象。

2 个答案:

答案 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。如果我传递连接对象,则只使用一个连接。