Asp.net mvc .Net实体框架ObjectContext错误

Asp.net mvc .Net实体框架ObjectContext错误,asp.net-mvc,entity-framework,exception,razor,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

我有一个带有代码的方法:

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);
            }
在视图I catch exception中,ObjectContext实例已被释放,不能再用于需要连接的操作。

有些人说.ToList()必须解决这个问题,但它也抛出了myList.ToList()的一个异常。我有什么问题

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

对不起,我的英语不好。

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

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

我很确定问题在于您正在向视图返回IEnumerable,这意味着这些项实际上还没有被检索到。但是,当您将对象返回到视图时,DbContext将在视图有机会检索行之前被释放。

问题在于用户实体的延迟加载子属性。我在link语句中添加了Include(“PropName”),效果很好。

可能是一百万的副本。。。他们建议使用语句删除,但在另一篇帖子中,人们说我应该始终关闭dbcontext对象。我的意思是在“using”块中包含ToList();除了您所说的使用语句之外(在使用我编写的语句(linq语句).ToList();)中),我在view@item.FullName()中有一个异常(。该问题已通过link statemet中的Include子属性解决!