2011-12-08 22 views
0

我在WF4.0中使用PersistenceIOParticipant將某些內容與工作流實例的持久性一起保存到數據庫中。我不知道如何在工作流持久化中使用同一個連接對象,並且我不得不使用分佈式事務。有什麼方法可以避免使用DTC?在WF4.0中使用PersistenceIOParticipant時如何避免DTC?

+0

我不認爲在這種情況下有任何方法可以避免MSDTC。 –

回答

1

我發現WF4示例項目「WorkflowApplication ReadLine Host」有用 以查看persistenceIOParticipant實例的示例。

我在構造函數中切換了布爾值以驗證事務正在被使用,並且需要使用 MSDTC。

http://msdn.microsoft.com/en-us/library/dd764467.aspx

1

如果使用SQL Server 2008+,那麼是否需要多個連接,它不應該的問題。在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構造函數和流量Transaction.Current。顯然,微軟可以在任何時候改變這一點,所以可以自行決定使用。

相關問題