.Net Entity Framework ObjectContext错误

时间:2012-03-25 16:37:58

标签: asp.net-mvc entity-framework exception razor

我有代码方法:

using (var cc = new MyDBContext())
            {
                var myList = (from user in cc.Users
                                   where user.UserGroup.Name == "smth"
                                   orderby user.ID ascending
                                   select user);

                if (startIndex != null)
                    return View(myList.Skip((int)startIndex).Take(50));
                else
                    return View(myList);
            }

在视图中我捕获异常已经处理了ObjectContext实例,并且不能再用于需要连接的操作。

有些人说.ToList()必须解决问题,但它也会引发myList.ToList()异常。我的问题是什么?

P.S。在调试模式下,我在视图中的@ item.FullName处有异常,但如果我在FullName属性上移动鼠标,我可以看到正确的值。

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

完全使用“using”块之外的“return View()”语句。这将确保您在放置DbContext对象之前检索完整的数据集。像这样:

using (var cc = new MyDBContext())
{
    var myList = (linq).ToList();
}
return View(myList);

我很确定问题是你将IEnumerable返回给View,这意味着尚未实际检索到这些项目。但是当您将对象返回到View时,DbContext将在视图有机会检索行之前被释放。

答案 1 :(得分:1)

问题出在用户实体的延迟加载子属性中。我添加到链接语句Include(“PropName”),它运作良好。