2009-07-17 53 views
0

我們的應用程序遵循使用Rick Strahl在他的blog上概述的DataContextFactory類,包括修改Richard所提及的關鍵字(使用type.AssemblyQualifiedName)來維護每個Thread/HttpContext的DataContext的方法)。Scoped DataContext間歇性地引發了ExecuteReader錯誤

解決方案出現的聲音(雖然在大多數情況下,不同的方法可能會更好),但是在使用這個我已經看到出現在應用間歇性錯誤:

ExecuteReader需要一個開放和 可用的連接。連接的 當前狀態已關閉。

我整個訪問使用下面的屬性的代碼DataContext的,那是我的DataContext的類的一部分:

/// <summary> 
/// Returns the current datacontext for the thread or HttpContext, creating one if it does not exist. 
/// </summary> 
public static SharedDataContext Current 
{ 
    get 
    { 
     return DataContextFactory.GetScopedDataContext<SharedDataContext>(); 
    } 
} 

作爲間歇的,我有一個很難牽制下來。有誰知道我可能做錯了什麼,或者有一個好主意我怎麼能夠調試這個問題?


注意這可能可能是懸而未決問題here

回答

0

我們現在使用的是維持每筆交易datacontexts定製DataContextFactory的副本。唯一的另一個主要變化是使用[ThreadStatic]作爲屬性,而不是通過Thread.Get/SetData手動訪問。

由於這個變化問題不再出現,並且由於沒有提出其他答案,我建議[ThreadStatic]作爲解決方案