2009-12-03 48 views
3

我有一個LINQ to SQL/Unity/ASP.NET MVC/SQL Server應用程序託管在Azure上。我在整個網站使用懶惰評估。應用程序正在使用到SQL Server的TCP連接,並且每隔一段時間我就會收到一條「將請求發送到服務器時發生傳輸級錯誤」。 SQLEXCEPTION。LINQ to SQL延遲評估異常處理

那麼因爲查詢在後面的代碼中被調用時會變得物化,所以我不能只用try/catch來包裝特定的一段代碼。

有沒有辦法通過實現一個接口或將一個委託連接到DataContext來處理這個異常?

回答

3

如果您按照原樣使用linq的結果,那麼您必須處理實現數據的代碼中的錯誤。但是,並不是直接返回linq查詢結果,而是將其封裝在自己的設計的IEnumerable實現中,該實現可以自由地實現任何您喜歡的錯誤處理。這樣,使用IEnumerable的代碼就不必處理異常。

+0

我沒有嘗試過,但它似乎是最合理的選擇。如果我再次遇到這個問題,在另一個項目上,我會嘗試一下。就目前而言,我不得不轉向其他項目。 – zznq 2010-02-22 22:58:53

0

我認爲解決這個問題的唯一方法是在try catch中包裝觸發(實現)對SQL服務器調用的代碼。