在EF中为Context对象使用一个连接

时间:2013-07-08 07:47:30

标签: entity-framework model-view-controller connection sqlprofiler

如何在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时间已打开。

1 个答案:

答案 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