您的位置:首页 > 其它

序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用

2012-03-31 15:51 405 查看

序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用

entity famework+asp.net mvc 做code first项目的时候,前台ajax请求到后台 JsonResult

在后台返回 return Json(list, JsonRequestBehavior.AllowGet)的时候,出错:

序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用。

解决方法:

1.可以在查询的时候这样子

var list = from f in db.Categories
//这里要select new
select new
{
Id = f.Id,
Name = f.Name,

};


2.你可以尝试删除所有的导航属性的virtual关键字禁用延迟加载和创建代理,然后使用预先加载,而不是显式地加载所需的对象图:

public ActionResult GetAll()
{
return Json(Context.Categories
.Include(o => o.Products)
,
JsonRequestBehavior.AllowGet);
}


看起来像是不依赖于延迟加载,无论如何,因为你使用virtual属性延迟加载对象图,可能会造成现在的系列化的麻烦。
3.没有必要删除virtual关键字导航性能(这将使延迟加载的模型完全不可能)。这足以创建代理(以及禁用延迟加载)禁用代理扰乱序列一样,具体情况:

Context.Configuration.ProxyCreationEnabled = false;


这将禁用,仅适用于特定的上下文实例Context创建代理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐