1

SQL Server Compact 不支持分布式事务。因此,如果 TransactionScope 内有多个连接 - 将引发异常。有没有办法设置 ADO.NET 提供程序以将一个连接用于相同的连接字符串?

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

更新
抱歉,我没有提到我使用实体框架,所以我无法控制 SQL 命令。我可能只是传递连接字符串。由于某种原因,为 TransactionScope 中的一个连接字符串创建了几个连接对象。

4

2 回答 2

2

更新的答案(来自此处的代码示例):

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

更新

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

有关实体何时打开新连接的更多信息。

于 2011-07-14T08:41:07.610 回答
1

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

于 2011-07-14T09:49:35.083 回答