我应该在End_Request事件处理程序中处理给定的ApplicationDbContext吗?

时间:2017-04-30 11:21:11

标签: asp.net entity-framework asp.net-identity owin dbcontext

我有Asp.Net Webforms应用程序和实体框架。应用程序构建在Visual Studio的默认Web应用程序上。

应用程序已配置为每个Owin创建ApplicationDbContext 上下文(每个请求)。我没有在每次数据库查询后关闭DbContext,因为这样我就不会利用EF提供的所有缓存

所以我使用从当前Owin Context返回的给定DbContext。但是我没有看到任何处理给定DbContext的代码。我应该在End_Request事件处理程序中处理给定的DbContext吗?或者它是自动处理的? (我猜不是)

1 个答案:

答案 0 :(得分:2)

  

应该处理DbContext实例(但你可能没问题   如果它们不是)DbContext实现IDisposable。它的实例应该   因此,一旦不再需要,他们就会被处置掉。在   然而,除非你选择明确管理,否则不会这样做   DbContext使用的数据库连接或事务,而不是   调用DbContext.Dispose()不会导致任何问题

正如EF团队成员Diego Vega解释的那样 Do I always have to call Dispose() on my DbContext objects? Nope

根据我的经验,我可以补充一点:过去我从不担心处理dbcontext而且我从未遇到过任何问题。最近我没有手动创建它,但我让我的DI容器为我实例化它并在需要处理时处理它。