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。如果我傳遞連接對象,則只使用一個連接。