实体框架 - 对象上下文的闭包

时间:2012-10-04 14:22:52

标签: entity-framework entity-framework-4.3.1

使用EFProfiler(绝对精彩的工具BTW!)来分析我们的一些实体框架应用程序后,似乎在大多数情况下,所有的对象上下文都没有关闭。

例如,在本地运行之后,EF Profiler告诉我, 326 对象上下文已打开,但只有1个已关闭?

所以我的问题是,我应该担心吗?或者它是否在实体框架中自包含?

3 个答案:

答案 0 :(得分:4)

如果您没有使用IoC容器,那么您可以在每次请求后手动关闭ObjectContexts,例如在Global.asax的End Request中,从而模拟您的上下文的“按请求”生活方式?< / p>

答案 1 :(得分:2)

如果您的应用程序没有明确地保留它们,最终将处理ObjectContexts,但一般情况下,您应该在完成后尽快确定性地处理它们。在大多数情况下,他们将保持数据库连接,直到它们被处置。在我当前的Web应用程序中,我们使用IoC容器(Autofac)来确保在请求期间打开的任何ObjectContext都在请求结束时处理,而不必等待垃圾回收。

答案 2 :(得分:2)

我建议你担心它并尝试解决问题,因为对象上下文非常“笨重”。如果你有太多的应用程序,你的应用程序可能最终会使用比它需要更多的内存,IIS会更频繁地重新启动你的应用程序......