关于实体框架Context
的使用和再利用的最佳实践,我并不清楚。
我的问题是,我应该尝试创建1个上下文并为不同的查询多次重复使用它,还是应该为每个查询创建新的上下文?
例如,如果我有一个包含10个图表的表单,所有图表都是从同一个表中查询的数据,那么10个查询应该来自一个上下文还是10个不同的上下文?
从代码封装的角度来看,我更愿意创建10个新的上下文,这是一个好主意,它是否可扩展?
答案 0 :(得分:12)
这一切都取决于你的应用程序。
一个关键考虑因素是ObjectContext不是线程安全的,因此对于每个请求的Web应用程序ObjectContext都是可行的。
对于Win Forms应用程序,您可以查看具有更长寿命的ObjectContexts。但是,如果您希望更紧密地确定范围,我会首先尝试,而不是过早地优化它。
有关Danny Simmons博客的更多信息here。
答案 1 :(得分:2)
如果您正在谈论模型 - 上下文使用一个。因为您只需要一个模型 - 要查询的上下文 - 即这是数据库模型。
如果您正在谈论ObjectContext - 那么每个Query(Linq)就有一个。 请关注这个Performance Considerations for Entity Framework