2

而使用 Using 语句收到此错误

操作无法完成,因为 DbContext 已被释放。

And While Use without Using Not收到错误这个错误的原因是什么?

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

2 回答 2

6

您的问题无疑是由于延迟执行

通过调用强制它访问数据库的方法,强制该查询进行评估应该可以工作。ToList应该足够了:

var q = context.CatCamera
    .Where(p => p.Category.Equals(value))
    .Select(p => p.CatDetails).ToList();

目前,当您的查询被评估时,您的上下文将被处理掉并且无法调用数据库。因此错误。

于 2013-08-12T05:27:56.600 回答
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);
}
于 2013-08-12T05:28:36.743 回答