加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 确保对控制器中创建的对象进行IDisposable调用并

发布时间:2020-12-16 09:14:46 所属栏目:asp.Net 来源:网络整理
导读:我一直都知道所有优秀的程序员都会在任何实现IDisposable的对象上调用Dispose,例如EF中的ObjectContext类. 我是asp.net mvc的新手,所以这可能是一个菜鸟问题但是这里…… public ActionResult Index() { using (var db = new MyObjectContext()) { return Vi
我一直都知道所有优秀的程序员都会在任何实现IDisposable的对象上调用Dispose,例如EF中的ObjectContext类.

我是asp.net mvc的新手,所以这可能是一个菜鸟问题但是这里……

public ActionResult Index()
    {
        using (var db = new MyObjectContext())
        {
            return View(db.People);
        }
    }

如果我运行此代码,我会收到一个错误(ObjectDisposedException),因为在View对数据执行操作之前已经处理了ObjectContext.这里有不同的方法吗?如何确保我的物品尽快被丢弃?

解决方法

重写Controller.Dispose()方法并在其中处理您的对象:

private IDisposable _objectToDispose;

public ActionResult Index() {
  var db = new MyObjectContext();
  _objectToDispose = db;
  return View(db.People);  
}

protected override void Dispose(bool disposing) {
  if (disposing && _objectToDispose != null) {
    _objectToDispose.Dispose();
  }
  base.Dispose(disposing);
}

MVC框架将在请求结束时自动调用Controller.Dispose().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读