虽然使用Using语句会收到此错误
由于已经处理了DbContext,因此无法完成操作。
使用不使用不会收到错误 这个错误的原因是什么?
using (var context = new ProCamContext())
{
var q = context.CatCamera.Where(p => p.Category.Equals(value)).Select(p => p.CatDetails);
return Json(q);
}
答案 0 :(得分:6)
您的问题无疑是由于延迟执行。
通过调用强制它访问数据库的方法,强制该查询评估应该工作。 ToList
应该足够了:
var q = context.CatCamera
.Where(p => p.Category.Equals(value))
.Select(p => p.CatDetails).ToList();
目前,在评估查询时,您的上下文将被处理掉,无法调用数据库。因此错误。
答案 1 :(得分:1)
您的上下文已在查询执行之前处理完毕。 return Json(q)
返回查询表达式而不先执行它。尝试调用ToList()以在退出使用范围之前实际运行查询。
using (var context = new ProCamContext())
{
var q = context.CatCamera.Where(p => p.Category.Equals(value)).Select(p => p.CatDetails).ToList();
return Json(q);
}