我在我的 ASP.NET MVC 4 应用程序中使用 Spring.NET 的 IOC 容器。每个控制器都从容器中获取 EF 数据上下文:
private readonly IDBContext db =
(IDBContext) ApplicationHelper.ApplicationContext.GetObject("DatabaseContext");
我已经为控制器搭建了脚手架,默认情况下它们实现了 IDisposable 接口,其中设置了 DB 连接 - 如下所示:
protected override void Dispose(bool disposing)
{
this.db.Dispose();
base.Dispose(disposing);
}
没关系 - 我想保持这种状态。但是,被调用的第二个控制器给出了一个异常,说明数据库上下文已被释放。
所以 - 我想做的是让 IOC 容器在下一个控制器调用该GetObject()
方法时检查对象是否已被释放。这可能吗,还是我应该改变我的设计?