我有一个运行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中的错误吗? :(
谢谢。
答案 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);
}