2011-12-08 4 views
0

私はWF4.0でPersistenceIOParticipantを使用して、ワークフローインスタンスの永続性とともにデータベースに何かを保存しています。ワークフローの永続性で同じ接続オブジェクトを使用する方法がわからず、分散トランザクションを使用する必要があります。 DTCの使用を避ける方法はありますか?WF4.0でPersistenceIOParticipantを使用する場合のDTCの回避方法

+0

この場合、MSDTCを回避する方法はありません。 –

答えて

1

私はアクションでpersistenceIOParticipantの例を参照してくださいWF4サンプル・プロジェクト「WorkflowApplication ReadLineのホスト」便利 を見つけました。

トランザクションが使用され、 MSDTCが必要であることを確認するために、コンストラクタのブール値を切り替えました。

は、複数の接続が必要とされるならば、それは問題ではないはず、SQL Serverの2008+を使用している場合http://msdn.microsoft.com/en-us/library/dd764467.aspx

1

を参照してください。 SqlWorkflowInstanceStoreでリフレクタを使用した後、接続文字列にいくつかの追加プロパティを設定していることがわかりました。

SqlConnectionStringBuilder builder2 = new SqlConnectionStringBuilder(connectionString); 
    builder2.AsynchronousProcessing = true; 
    builder2.ConnectTimeout = (int)TimeSpan.FromSeconds(15.0).TotalSeconds; 
    builder2.ApplicationName = "DefaultPool"; 
    SqlConnectionStringBuilder builder = builder2; 
    return builder.ToString(); 

私は、プロファイラで確認カスタムIO参加し、この接続文字列のコードを使用するときにMSDTCが関与していない。ここでは、接続文字列を作成するために使用するコードです。基本PersistenceIOParticipantコンストラクタにtrueを渡し、Transaction.Currentを適切に流すことを忘れないでください。明らかに、マイクロソフトはいつでもそれを変更して、あなたの自由裁量で使用することができます。

関連する問題