我们的应用程序遵循每个Thread / HttpContext维护DataContext的方法,使用Rick Strahl在他的blog上概述的DataContextFactory类,包括Richard提到的Key的修正(使用type.AssemblyQualifiedName)。
解决方案看起来很合理(尽管在大多数情况下,不同的方法可能会更好)但是在使用此方法时我看到应用程序中出现了间歇性错误:
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 :(得分:0)
我们现在使用自定义DataContextFactory来维护每个事务的datacontexts。唯一的另一个主要变化是使用[ThreadStatic]作为属性,而不是通过Thread.Get / SetData手动访问
由于这种改变似乎不再出现问题,并且由于没有提出其他答案,我建议将[ThreadStatic]作为解决方案