public ActionResult Index()
{
testContext context = new testContext();
var data = context.People;
return Json(data, JsonRequestBehavior.AllowGet);
}错误信息:
序列化类型为“System.Data.Entity.DynamicProxies.Person_896262438F25FF951FF9F66BD7BE34F10A8A5D962769864829136BF959F99A37”的对象时检测到循环引用。

错误是EF的导航属性导致的,Person对象的Pets属性引用了Person对象导致无限循环,EF下很多问题ToList后通常能解决,但这次不行:
public ActionResult Index()
{
testContext context = new testContext();
var data = context.People.ToList();
return Json(data, JsonRequestBehavior.AllowGet);
}序列化类型为xxx的对象时检测到循环引用解决方法
方法一:关闭导航功能(不能再使用导航属性)
public ActionResult Index()
{
testContext context = new testContext();
[color=Red]context.Configuration.ProxyCreationEnabled = false;[/color]
var data = context.People;
return Json(data, JsonRequestBehavior.AllowGet);
}方法二:转为匿名对象
public ActionResult Index()
{
testContext context = new testContext();
var data = context.People[color=Red].Select(item => new { item.Id, item.Name })[/color];
return Json(data, JsonRequestBehavior.AllowGet);
}
评论(0)
暂无评论。