只要我不使用注释掉的using
语句,以下代码就可以工作。当我使用using
我得到The operation cannot be completed because the DbContext has been disposed
public IQueryable<DTOs.FormQuestionDTO> GetForm(int id, int page = 0)
{
// FS stores pages starting with 1
page = page == 0 ? 1 : page;
//using (var db = new Models.FormEntities())
//{
var db = new Models.FormEntities();
var questions = from fq in db.FormQuestions
join q in db.Questions on fq.QuestionId equals q.QuestionId
where (fq.FormId == id) && (fq.PageNumber == page) && fq.Disabled == false
orderby fq.DisplayOrder
select new { q.QuestionId, q.QuestionText, fq.DisplayOrder, fq.PageNumber };
var dto = questions.Project().To<DTOs.FormQuestionDTO>();
if (questions == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return dto;
}
//}
}
我最初的预感是 Using 正在处理DbContext
LINQ 查询之后的右侧,但是在放入块.Dipose()
内部时我得到了同样的错误finally
。
这里发生了什么?我有一段时间没有在 C# 中工作了,所以我可能遗漏了一些简单的东西。