我有一個.NET 4.0 ASP.NET MVC應用程序,它也承載了Workflow Foundation 4.0。在這個工作流程中,一些自定義工作流活動將執行代碼,以使用Linq to SQL進行一些數據庫更新。代碼包括調用一個方法,該方法又調用一些其他方法等......我也有一個業務層,它有一個數據訪問工廠,提供對包含數據庫操作方法的所有數據訪問對象的訪問。從工作流活動中訪問當前的HttpContext?
現在假設我的WF活動調用方法A,而方法A又調用另一個類中的方法B,該方法在另一個類中調用方法C結束D.在每個這些方法中,我想檢索我的數據訪問工廠的同一個實例,以便所有數據庫操作都在相同的數據庫事務中執行。我將如何爲我的數據訪問工廠設計單例模式?請注意,方法A,B,C和D也可以從Asp.Net MVC控制器調用。當方法A,B,C和D從asp.net mvc控制器中調用時,很容易,我可以使用HttpContext來存儲我的數據訪問工廠單例,這樣在一個http請求中我也可以得到相同的實例我的數據訪問工廠。
但是,當從Workflow活動調用這些方法時,當然沒有HttpContext。我嘗試了線程靜態變量,但在Web應用程序中您不確定,方法A,B,C和D將在同一個線程中調用。我也嘗試過CallContext,但我經歷過,我並不總是檢索同一個實例,所以顯然CallContext也不是解決方案。
基本上,這個問題可以概括爲'在asp.net應用程序中運行的後臺進程中獲取對象的相同實例'(無論此後臺任務是由WF活動啓動還是另一種背景任務的方式,例如使用任務<T>)
看看我在那裏做了什麼? – Will 2012-04-09 11:39:54