System.ObjectDisposedException:'ObjectContext实例已被释放,不能再用于需要连接的操作。

时间:2017-07-18 04:39:10

标签: asp.net-mvc-5

我在视图页面中收到错误。 它的我的控制器

using (wipoeeshetronEntities db = new wipoeeshetronEntities())
{
    var tbllogin = db.masteruserlogindet_tbl.Where(m => m.IsDeleted == 0).ToList();
    return View(tbllogin); 
}

这是我的观点:

 @Html.DisplayFor(modelItem => item.masterroledet_tbl.RoleDesc)

2 个答案:

答案 0 :(得分:0)

删除“使用”。 Controller有自己的dispose()方法。那么你的新代码就是......

wipoeeshetronEntities db = new wipoeeshetronEntities()
var tbllogin = db.masteruserlogindet_tbl.Where(m => m.IsDeleted == 0).ToList();
return View(tbllogin); 

这应该有效。

答案 1 :(得分:0)

通过调用View返回的对象是一个ActionResult实例,它将沿着管道进一步传递。但是,因为您正在延迟加载实体(即不在masterroledet_tbl表中包含或连接),所以您已经超出了datacontext的范围(在using语句中)。

解决方案不是让上下文不受干扰(这可能会导致内存泄漏问题),而是在离开MVC操作之前在实体上包含/加入正确的对象。