我正在尝试在MVC中使用JsonResult方法显示JSON,正在使用Entity Framework,但是我的问题是PostMan显示了服务器错误:
ObjectContext实例已被处置,不能再用于需要连接的操作。
我正在使用一个涉及3个不同表的查询,但是其中一个表可能会检索3个以上不同的行。
这是我的代码:
[HttpGet]
[AllowAnonymous]
public JsonResult RetreiveResume(int User)
{
using (var context = new DexusEntities())
{
var collection = (from p in context.CND_PersonalData join
pd in context.CND_ProfessionalData on p.UserId equals pd.UserId join
ex in context.CND_ExperiencesData on p.UserId equals ex.UserId select p).ToList();
return Json(collection, JsonRequestBehavior.AllowGet);
}
}
我的代码怎么了?
谢谢。
答案 0 :(得分:0)
使用后移动返回线。您在尝试返回结果后立即处理上下文。您可以检查此链接以获取更多信息:What happens if i return before the end of using statement? Will the dispose be called?
[HttpGet]
[AllowAnonymous]
public JsonResult RetreiveResume(int User)
{
var collection = new CND_PersonalData();
using (var context = new DexusEntities())
{
context.Configuration.LazyLoadingEnabled = false;
collection = (from p in context.CND_PersonalData join
pd in context.CND_ProfessionalData on p.UserId equals pd.UserId join
ex in context.CND_ExperiencesData on p.UserId equals ex.UserId select p).ToList();
}
return Json(collection, JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:-1)
您能否尝试将返回内容放在方括号内,如下所示:
using (var context = new DexusEntities())
{
var collection = (from p in context.CND_PersonalData join
pd in context.CND_ProfessionalData on p.UserId equals pd.UserId join
ex in context.CND_ExperiencesData on p.UserId equals ex.UserId select p).ToList();
return Json(collection, JsonRequestBehavior.AllowGet);
}