使用EFProfiler(绝对精彩的工具BTW!)来分析我们的一些实体框架应用程序后,似乎在大多数情况下,所有的对象上下文都没有关闭。
例如,在本地运行之后,EF Profiler告诉我, 326 对象上下文已打开,但只有1个已关闭?
所以我的问题是,我应该担心吗?或者它是否在实体框架中自包含?
答案 0 :(得分:4)
如果您没有使用IoC容器,那么您可以在每次请求后手动关闭ObjectContexts,例如在Global.asax的End Request中,从而模拟您的上下文的“按请求”生活方式?< / p>
答案 1 :(得分:2)
如果您的应用程序没有明确地保留它们,最终将处理ObjectContexts,但一般情况下,您应该在完成后尽快确定性地处理它们。在大多数情况下,他们将保持数据库连接,直到它们被处置。在我当前的Web应用程序中,我们使用IoC容器(Autofac)来确保在请求期间打开的任何ObjectContext都在请求结束时处理,而不必等待垃圾回收。
答案 2 :(得分:2)
我建议你做担心它并尝试解决问题,因为对象上下文非常“笨重”。如果你有太多的应用程序,你的应用程序可能最终会使用比它需要更多的内存,IIS会更频繁地重新启动你的应用程序......