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

时间:2010-11-02 18:46:26

标签: c# static entity-framework-4 datacontext

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

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

2 个答案:

答案 0 :(得分:9)

没有。它们不应该总是静止的。

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

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

Linq to SQL DataContext Lifetime Management - Rick Strahl's Web Log(似乎没有相关性,但仍然是)

Making Entity Framework (v1) work, Part 1: DataContext Lifetime Management(如果您不喜欢Rick的解决方案,可以选择其他方式)

答案 1 :(得分:5)

  

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

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

* :正确的答案可能是它们永远不应该是静态的,但我总是对编程建议持怀疑态度。因此,这比任何事情都更为谨慎。

相关问题