2011-05-18 72 views
3

我们首先使用cEF ode开发ASP.NET web应用程序。什么/哪里是创建/处理DBContext请求的最佳位置?我只有一个上下文,并没有使用任何DI容器。目前我有多个方法来调用每个请求,每个方法创建自己的上下文。我怎么说,像.. GetContextforRequest()这样的东西,并将其用于请求并在处理请求时处置它?EF代码第一个用于web应用程序的DBContext生命周期

在此先感谢

回答

7

What't您在每次请求为1个上下文的角度来看待的是使用上下文一个很好的方式,在您减少创建它们的开销。您可以在BeginRequest上创建新的上下文,并将其存储在HttpContext.Current.Items中,并在EndRequest上处置它。

然后您可以创建一个。 GetContextforRequest()方法来封装从HttpContext获取.Current.Items

但是我会建议看看使用DI容器。他们中的大多数都有助手协助创建和处理每个请求的对象。

编辑

具有上下文开了请求期间的好处是,你可以利用第一级缓存。这是在上下文的生命周期中缓存对象的地方。因此,假设你有一个名为User的表包含一堆用户,并且你在同一请求中调用context.Set()。ToList()两次,第一次调用将从数据库中获取数据,第二次调用将从一级缓存。

+0

我同意DI部分 – maxlego 2011-05-18 11:27:02

+0

完成请求后,你是否会处理dbcontext? – 2012-07-17 20:08:14

+0

是的,清理资源。 – 2012-07-18 09:48:18

相关问题