.net TransactionScope和SQL Server Compact
SQL Server Compact不支持分布式事务。因此,如果TransactionScope内有多个连接,则会引发异常。有没有办法将ADO.NET提供程序设置为对同一连接字符串使用一个连接 我知道我可以通过connection.BeginTransaction使用常规事务,但TransactionScope更适合我 更新.net TransactionScope和SQL Server Compact,.net,sql-server,entity-framework,transactionscope,distributed-transactions,.net,Sql Server,Entity Framework,Transactionscope,Distributed Transactions,SQL Server Compact不支持分布式事务。因此,如果TransactionScope内有多个连接,则会引发异常。有没有办法将ADO.NET提供程序设置为对同一连接字符串使用一个连接 我知道我可以通过connection.BeginTransaction使用常规事务,但TransactionScope更适合我 更新 抱歉,我没有提到我使用实体框架,所以我无法控制SQL命令。我可以传递连接字符串。由于某种原因,在TransactionScope中为一个连接字符串创建了多个connecti
抱歉,我没有提到我使用实体框架,所以我无法控制SQL命令。我可以传递连接字符串。由于某种原因,在TransactionScope中为一个连接字符串创建了多个connections对象。更新了答案(代码示例来自):
更新 正如您所说,另一个解决方案是创建一个连接对象,并在对象上下文的构造函数中使用它
关于实体何时打开新连接。我的错误是将连接字符串传递给了
ObjectContext
。如果我传递连接对象,则只使用一个连接。能否提供一些代码?您可以手动设置命令的连接,但@Idsa在他的问题中使用了该连接。正如你从他自己的回答中所看到的那样,它成功了!不知道。向上投票。您的解决方案将适用于一个ObjectContext。但是我需要一个通过几个ObjectContext的连接,正如我在下面发布的那样。但我会记下你的答案。@leppie,SQLCE支持TransactionScope。它不支持分布式transactions@Idsa还加了你的谎言。我站出来纠正。SQLCE有一个限制,即连接应该在transactionscope中打开。我已经打开了连接,这就是为什么我的测试不起作用。下面是technet文章,以供进一步参考
using (var context = new MyContext())
{
using (var txscope = new TransactionScope())
{
context.Connection.Open();
// do query 1
// do query 2
}
}