代码之家  ›  专栏  ›  技术社区  ›  Rhys

我应该为每个操作共享实体框架上下文还是创建一个新的上下文?

  •  22
  • Rhys  · 技术社区  · 15 年前

    我不太清楚关于实体框架的使用和重用的最佳实践 Context .

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

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

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

    2 回复  |  直到 15 年前
        1
  •  12
  •   Andrew Peters    15 年前

    这完全取决于你的应用程序。

    一个关键的考虑因素是,ObjectContext不是线程安全的,所以对于Web应用,每个请求的ObjectContext是可行的。

    对于一个Win表单应用程序,您可以看到使用寿命更长的ObjectContexts。但是,如果您更喜欢更严格地定义范围,我将首先尝试这一点,而不是过早地优化它。

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

        2
  •  2
  •   littlegeek    15 年前

    我可能错了,但我就是这样做的…

    如果您在谈论模型上下文,请使用一个。因为您只需要一个模型——查询的上下文——也就是说,这是数据库模型。

    如果您谈论的是ObjectContext,那么每个查询(Linq)一个。 就在这吃吧 Performance Considerations for Entity Framework