使用语句时出错

时间:2013-08-12 05:25:32

标签: c# using

虽然使用Using语句会收到此错误

  

由于已经处理了DbContext,因此无法完成操作。

使用不使用不会收到错误 这个错误的原因是什么?

using (var context = new ProCamContext())
{
    var q = context.CatCamera.Where(p => p.Category.Equals(value)).Select(p => p.CatDetails);
    return Json(q);
}

2 个答案:

答案 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);
}