数据上下文应该是静态的吗?
我正在使用entity framework4,我在其中一个基类中为模型创建了一个datacontext 。 但是我在分析它时每次尝试查询时都会创建上下文,所以我想把它设置为静态,这样它只创建一次并且总是重用。
您是否认为这是最好的方法,数据/对象上下文应始终保持静态? 使它静止是否有任何缺点? 数据上下文应该是静态的还是非静态的? 欢迎任何想法或建议。
不,他们不应该永远是静态的。
实际上,您可以使用静态数据上下文而不是非静态等效项来运行更多问题(例如来自单个会话的多个用户从多个线程访问相同的上下文)。
我不打算详细解释,因为有一些非常好的博客文章涵盖了细节:
Linq to SQL DataContext终身管理 – Rick Strahl的Web日志 (似乎不太相关,但仍然是)
使entity framework(v1)工作,第1部分:DataContext终身管理 (如果您不喜欢Rick的解决方案,可能的替代方案)
数据上下文应该始终是静态的吗?
不,他们应该(几乎* )永远不会是静态的。 DataContext
创建起来很便宜,因为它们可以用作工作单元。 因此,每个“对话”应该有一个DataContext
(无论你的上下文是什么意思)。
* :正确的答案可能是它们永远不应该是静态的,但我总是怀疑编程建议总是或永远不会。 因此,这比任何事情都更令人畏缩。