我们首先使用cEF ode开发ASP.NET Web应用程序.什么/在哪里为请求创建/处理DBContext的最佳位置?我只有一个上下文,我没有使用任何DI容器.目前,我有多种方法可以为每个请求调用,每个方法都创建自己的上下文.我怎么说,像… GetContextforRequest()并将其用于请求并在处理请求时处理它?
提前致谢
解决方法
对于每个请求使用1个上下文而言,您所寻求的是使用上下文的一种非常好的方法,因为您可以减少创建它们的开销.您可以在BeginRequest上创建新上下文,并将其存储在HttpContext.Current.Items中,并在EndRequest上处理它.
然后你可以创建一个. GetContextforRequest()方法封装来自HttpContext.Current.Items的fetch
不过我会建议使用DI容器.他们中的大多数都有助手帮助每个请求创建和处理对象.
编辑
在请求期间打开Context的好处是您可以利用第一级缓存.这是在Context的生命周期中缓存对象的位置.所以说你有一个名为User的表包含一堆Users,你在同一个请求中调用了context.Set().ToList()两次,第一个调用将从数据库中获取数据,第二个调用将从第一级缓存.