1

SQL Server Compactは分散トランザクションをサポートしていません。したがって、TransactionScope内に複数の接続がある場合、例外がスローされます。同じ接続文字列に対して1つの接続を使用するようにADO.NETプロバイダを設定する方法はありますか?TransactionScopeとSQL Server Compact

私は通常のトランザクションをconnection.BeginTransactionで使用できることを理解していますが、TransactionScopeは私にとっては好ましい方法です。

UPDATE
申し訳ありませんが、私はEntity Frameworkで作業しているとは言及していませんでしたので、SQLコマンドを制御することはできません。私は接続文字列を渡すかもしれません。何らかの理由でTransactionScope内の1つの接続文字列に対して作成されたオブジェクトがいくつか接続されています。

+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なぜ更新されるのですか? – VMAtm

+0

しかし@Idsaは彼の質問にそれを使用しました。そして、それは彼自身の答えから見ることができるように働いた! – VMAtm

+0

わからない。 Upvoted。ソリューションは1つのObjectContextに対して機能します。しかし、私は以下に投稿したように、いくつかのObjectContextを通して1つの接続が必要です。しかし、私はあなたの答えに印をつけます。 – SiberianGuy

1

私のエラーは、接続文字列をObjectContextに渡したことです。接続オブジェクトを渡すと、1つの接続だけが使用されます。

関連する問題