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

Vis*_*hal 8 c# datacontext static entity-framework-4

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

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

Jus*_*ner 9

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

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

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

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

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


jas*_*son 5

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

不,他们应该(几乎*)永远不会是静止的.DataContext创造起来很便宜,因为它们被用作工作单元.因此,DataContext每个"对话" 应该有一个(无论你的上下文发生什么意思).

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