EF Code First DBContext Web应用程序的生命周期

时间:2011-05-18 09:49:40

标签: entity-framework ef-code-first entity-framework-4.1

我们首先使用cEF ode开发ASP.NET Web应用程序。什么/在哪里为请求创建/处理DBContext的最佳位置?我只有一个上下文,我没有使用任何DI容器。目前,我有多种方法可以为每个请求调用,每个方法都创建自己的上下文。我怎么说,像... GetContextforRequest()并将其用于请求并在处理请求时处理它?<​​/ p>

提前致谢

1 个答案:

答案 0 :(得分:7)

对于每个请求使用1个上下文而言,您所寻求的是使用上下文的一种非常好的方法,因为您可以减少创建它们的开销。您可以在BeginRequest上创建新的上下文,并将其存储在HttpContext.Current.Items中,并在EndRequest上处理它。

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

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

修改

在请求期间打开Context的好处是您可以利用第一级缓存。这是在Context的生命周期中缓存对象的位置。所以说你有一个名为User的表包含一堆Users,你在同一个请求中调用了context.Set()。ToList()两次,第一个调用将从数据库中获取数据,第二个调用将从第一级缓存。