我应该共享Entity-Framework上下文还是为每个操作创建一个新的上下文?

时间:2009-01-19 11:50:30

标签: entity-framework .net-3.5

关于实体框架Context的使用和再利用的最佳实践,我并不清楚。

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

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

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

2 个答案:

答案 0 :(得分:12)

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

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

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

有关Danny Simmons博客的更多信息here

答案 1 :(得分:2)

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

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

如果您正在谈论ObjectContext - 那么每个Query(Linq)就有一个。 请关注这个Performance Considerations for Entity Framework