0

如何在 EF 中为两个查询使用相同的连接,例如我在 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 时间已打开。

4

1 回答 1

2

对于来自浏览器的每个请求,都会创建一个控制器实例。因此它也会为每个请求创建新的上下文。并阅读这篇文章,什么是 ASP.NET MVC 页面的“页面生命周期”

此外,为每个请求创建一个 DbContext 实例是实体框架的常见做法

编辑..
如果需要处理连接,则需要将连接传递给 DbContext 构造函数并设置contextOwnsConnection=false。请参阅文档并尝试一下.. 在这里阅读更多内容.. DbContext 不会保持连接打开以供重复使用

于 2013-07-08T09:04:55.583 回答