ObjectContext实例已被释放 - 即使使用using(context)语句和ToList()

时间:2011-12-13 09:30:40

标签: asp.net-mvc-3 entity-framework c#-4.0 ef-code-first

我有一个运行EF Code First的MVC3项目。

以下是我的主页/索引代码:

public ActionResult Index()
{
    var IndVM = new IndexVM();
    using (QuoteContext QDomain = new QuoteContext())
    {
        IndVM.Quotes = QDomain.Quotes.Include("Tags").Include("Author").OrderByDescending(x => x.CreatedOn).Take(5).ToList();
        IndVM.Tags = QDomain.Tags.OrderByDescending(x => x.Quotes.Count).ToList();
        IndVM.Authors = QDomain.Authors.OrderByDescending(x => x.Quotes.Count).Take(5).ToList();
    }
    return View(IndVM);
}

正如你所看到的,我在using语句中有查询内容,我也在调用ToList()..但我仍然得到错误:

  

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

我非常感谢有任何帮助解决这个问题?这是EF Code First中的错误吗? :(

谢谢。

1 个答案:

答案 0 :(得分:1)

您必须关闭延迟加载,否则序列化程序将尝试遍历导航属性并抛出此异常。

public ActionResult Index()
{
    var IndVM = new IndexVM();
    using (QuoteContext QDomain = new QuoteContext())
    {
        QDomain.ContextOptions.LazyLoadingEnabled = false;
        // Query and populate IndVM here...
    }
    return View(IndVM);
}