数据上下文应该是静态的吗?

我正在使用entity framework4,我在其中一个基类中为模型创建了一个datacontext 。 但是我在分析它时每次尝试查询时都会创建上下文,所以我想把它设置为静态,这样它只创建一次并且总是重用。

您是否认为这是最好的方法,数据/对象上下文应始终保持静态? 使它静止是否有任何缺点? 数据上下文应该是静态的还是非静态的? 欢迎任何想法或建议。

不,他们不应该永远是静态的。

实际上,您可以使用静态数据上下文而不是非静态等效项来运行更多问题(例如来自单个会话的多个用户从多个线程访问相同的上下文)。

我不打算详细解释,因为有一些非常好的博客文章涵盖了细节:

Linq to SQL DataContext终身管理 – Rick Strahl的Web日志 (似乎不太相关,但仍然是)

使entity framework(v1)工作,第1部分:DataContext终身管理 (如果您不喜欢Rick的解决方案,可能的替代方案)

数据上下文应该始终是静态的吗?

不,他们应该(几乎* )永远不会是静态的。 DataContext创建起来很便宜,因为它们可以用作工作单元。 因此,每个“对话”应该有一个DataContext (无论你的上下文是什么意思)。

* :正确的答案可能是它们永远不应该是静态的,但我总是怀疑编程建议总是或永远不会。 因此,这比任何事情都更令人畏缩。