【问题标题】:Should I share the Entity-Framework context or create a new context for each operation?我应该共享实体框架上下文还是为每个操作创建一个新上下文?
【发布时间】:2010-10-02 05:23:10
【问题描述】:

关于使用和重用实体框架Context 的最佳实践我不是很清楚。

我的问题是,我应该尝试创建 1 个上下文并将其多次重复用于不同的查询,还是应该为每个查询创建一个新的上下文?

例如,如果我有一个包含 10 个图表的表单,所有图表的数据都是从同一个表中查询的,那么这 10 个查询应该来自一个上下文还是 10 个不同的上下文?

从代码封装的角度来看,我更愿意创建 10 个新的上下文,这是个好主意吗?它是否可扩展?

【问题讨论】:

    标签: entity-framework .net-3.5


    【解决方案1】:

    这完全取决于您的应用。

    一个关键的考虑因素是 ObjectContext 不是线程安全的,因此对于 Web 应用程序来说,每个请求的 ObjectContext 都是可行的方法。

    对于 Win Forms 应用程序,您可以考虑拥有更长寿命的 ObjectContexts。但是,如果您希望更紧密地确定范围,我会先尝试,而不是过早地对其进行优化。

    更多关于丹尼西蒙斯博客here

    【讨论】:

    • 感谢您的链接,它提供了我需要的信息,让我可以轻松地为我的问题中的情况创建不同的上下文。此外,我之前没有注意到 Detach 方法,因此它将在以后的项目中派上用场。
    【解决方案2】:

    恕我直言 - 我可能是错的,但我就是这样做的......

    如果您在谈论模型 - 上下文,请使用一个。由于您只需要一个模型 - 用于查询的上下文 - 即这是数据库模型。

    如果您正在谈论 ObjectContext - 每个查询 (Linq) 一个。 看看这个Performance Considerations for Entity Framework

    【讨论】:

    • 一个非常好的链接,它有助于减轻在创建许多上下文时对性能的一些担忧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多