0

我们的应用程序遵循为每个线程/HttpContext 维护一个 DataContext 的方法,使用 Rick Strahl 在他的博客中概述的 DataContextFactory 类,包括对 Richard 提到的 Key 的修改(使用 type.AssemblyQualifiedName)。

该解决方案看起来不错(尽管在大多数情况下,不同的方法可能会更好),但是在使用此解决方案时,我看到应用程序中出现了间歇性错误:

ExecuteReader 需要一个打开且可用的连接。连接的当前状态为关闭。

我使用以下属性访问整个代码中的数据上下文,这是我的 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>();
    }
}

作为间歇性,我很难确定这一点。有谁知道我可能做错了什么,或者知道我如何能够调试这个问题?


请注意,这可能与未回答的问题重复

4

1 回答 1

0

我们现在使用一个自定义的 DataContextFactory 来维护每个事务的数据上下文。唯一的其他主要变化是对属性使用 [ThreadStatic],而不是通过 Thread.Get/SetData 手动访问

由于此更改似乎不再出现问题,并且没有提出其他答案,我建议 [ThreadStatic] 作为解决方案

于 2009-08-28T16:51:30.003 回答