2011-03-14 27 views
1

我有一個業務流程將調用靜態類中的靜態方法。我剛發現,如果你需要很多次運行一個Linq查詢,那麼把它變成一個編譯查詢是一個好主意。而且我的編排會產生很​​多次。biztalk使用的靜態方法編譯查詢

但我不知道我會贏得任何東西,使其成爲一個編譯查詢。

每個編排都必須編譯查詢還是將它共享?

回答

0

每個編排都會在它自己的線程上執行,因此每個編排都會擁有自己的方法本地變量副本,包括linq查詢。所以每次調用該方法時都會編譯查詢。

不確定如何解決此問題,因爲靜態類的生存期由編排的生存期決定。你可以實現一個單一的業務流程,然後調用一個非靜態的方法。這樣,您可以讓第一次調用編譯查詢,並且所有後續調用都使用相同的查詢。

+1

我認爲你的描述不正確。靜態類的生命週期是應用程序域的生命週期,而不是編排的生命週期,如果在應用程序域被回收之前在同一主機上運行,​​則會在實例之間重用靜態值,這裏提供了一些半相關的想法 - http://blog.sabratech.co.uk/2007/08/thoughts-about-static-members-and-local.html – 2011-03-18 20:31:08

+0

你當然是正確的Yossi。 – 2011-04-07 12:07:27