entity-framework – 用于Web应用程序的EF Code First DBContext Lifetime

我们首先使用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()两次,第一个调用将从数据库获取数据,第二个调用将从第一级缓存.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些