如何在实体框架中关闭 SQL 连接

本文关键字:SQL 连接 框架 实体 | 更新日期: 2023-09-27 18:32:54

我将解释整个情况,以防有人有比我得到的解决方案更好的解决方案。

首先,这些是我正在使用的技术:

SQL Server 2012
Entity Framework 5
ASP.NET MVC 4
Repository Pattern for EF5 developed by myself

我在代码的某些部分不断收到SQL Server的错误19(物理连接不存在(。从我的研究中,我可以看到我没有确保连接在使用后关闭。我能找到的替代方案是:

  1. 使用关键字using
  2. 在我的操作返回后关闭连接

我放弃了第一种方法,因为代码非常大,所以找到每个使用我的上下文的地方并更改它目前是遥不可及的。

所以我考虑使用第二种方法,我只需要创建一个属性来装饰我的控制器,每次action返回时,我都会确保连接在之后关闭/处置。我已经知道该怎么做:

public class MyAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        //code to get the current running connection
    }
} 
我的

问题是:如何获取当前实体框架连接并从我的属性中关闭它?

非常感谢任何帮助,谢谢!

如何在实体框架中关闭 SQL 连接

控制器为框架的每个操作调用实例化和处置。 您可以在控制器的构造函数中安全地创建实体框架上下文,将其存储在控制器的字段中,并在控制器的Dispose方法中释放它。