【问题标题】:Should data contexts be static?数据上下文应该是静态的吗?
【发布时间】:2010-11-02 18:46:25
【问题描述】:

我正在使用实体框架 4,并在其中一个基类中为模型创建了一个 datacontext。但是我正在对其进行分析,并且每次尝试查询时都会创建上下文,因此我想将其设为 static 以便仅创建一次并始终重用。

您是否认为这是最好的方法,并且数据/对象上下文应始终设为静态?将其设为静态有什么缺点吗?数据上下文应该是静态的还是非静态的?欢迎任何想法或建议。

【问题讨论】:

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


【解决方案1】:

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

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

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

Linq to SQL DataContext Lifetime Management - Rick Strahl's Web Log(可能看起来不相关,但仍然是)

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

【讨论】:

    【解决方案2】:

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

    不,它们应该(几乎*)永远不会是静态的。 DataContext 的创建成本很低,因为它们旨在用作一个工作单元。因此,每个“对话”都应该有一个DataContext(无论这对您的上下文意味着什么)。

    *:正确的答案可能是它们永远不应该是静态的,但我总是对总是或永远不会的编程建议持怀疑态度。因此,这比什么都重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多