如何在EF中为两个Query使用相同的连接,例如我在MVC控制器中编写了此代码:
DataLayer.Context context = new DataLayer.Context();
[ChildActionOnly]
public int TodayVisits()
{
return Repository.VisitsRepository.TodayVisits(context);
}
[ChildActionOnly]
public int LastMonthVisits()
{
return Repository.VisitsRepository.LastMonthVisits(context);
}
我正在使用应用程序检查输出T-SQL,它显示连接2时间已打开。
答案 0 :(得分:1)
对于浏览器中的每个请求a controller instance will be created ..因此它也会为每个请求创建新的上下文。 并阅读此内容,What is the 'page lifecycle' of an ASP.NET MVC page。
进一步为每个请求创建DbContext实例的是common practice for entity framework。
修改.. 强>
如果需要处理连接,则需要将连接传递给DbContext构造函数并设置contextOwnsConnection
= false。请参阅documentation并尝试一下..
在这里阅读更多内容.. DbContext won't keep connection open for re-use