2009-01-19 59 views
21

我并不清楚关于使用和重新使用实体框架Context的最佳做法。我应该共享Entity-Framework上下文还是为每个操作创建一个新的上下文?

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

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

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

回答

10

这一切都取决于你的应用程序。

一个关键的考虑因素是ObjectContext不是线程安全的,所以对于Web应用程序而言,每个请求的ObjectContext是要走的路。

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

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

+0

感谢您的链接,它提供了我需要为我的问题创建不同情境的信息。此外,我之前没有注意到Detach方法,以便将来的项目可以派上用场。 – Rhys 2009-01-30 12:59:28

2

恕我直言 - 我可能是错的,但我这是怎么做到这一点...

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

如果你在谈论ObjectContext - 那么每个查询(Linq)一个。 在这个Performance Considerations for Entity Framework

+0

这是一个非常好的链接,它在创建许多上下文时帮助缓解了对性能的一些担忧。 – Rhys 2009-01-30 12:56:45

相关问题