EF提示“序列化类型为XXX的对象时检测到循环引用”
来源:互联网 发布:淘宝开店可以注销吗 编辑:程序博客网 时间:2024/06/18 18:28
今天在做MVC项目的时候,由于需要将对象转换为Json值,使用的代码如下:
- public ActionResult QuaryOrders()
- {
- var dataOrder = db.OrderDetails.Include(n => n.Product);
- return Json(dataOrder, JsonRequestBehavior.AllowGet);
- }
但EF提示“序列化类型为XXX的对象时检测到循环引用”,截图如下:
产生这种的原因是Entity Framework两个模型之间进行了相互引用,就是说这两个在数据中的表有主外键关系的
解决方法有两种:
方法一:使用匿名类来传递对象:
- public ActionResult QuaryOrders()
- {
- var dataOrder = db.OrderDetails.Include(n => n.Product).Select(n => new { Id=n.Id ,OrderId = n.OrderId});
- return Json(dataOrder, JsonRequestBehavior.AllowGet);
- }
方法二:使用命名空间Newtonsoft.Json(该程序集可以使用Nuget来下载)中的方法来序列化Json对象,转换后对数据会包含转义字符“\”:
- public ActionResult QuaryOrders()
- {
- JsonSerializerSettings setting = new JsonSerializerSettings()
- {
- ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- Formatting = Formatting.None
- };
- var ret = JsonConvert.SerializeObject(dataOrder, setting);
- return Json(ret, JsonRequestBehavior.AllowGet);
- }
补充:MVC中使用JSON的时候(考虑运行Get请求方式和导航属性造成的循环引用),在使用Get请求的使用要使用Json(ret, JsonRequestBehavior.AllowGet)方法,而由于导航属性造成的循环引用应该首先考虑使用匿名内部类来解决,也可以使用Json序列化工具Newtonsoft.Json中决序列化的循环引用问题,本文着重描述使用匿名内部类解决,其他方法可以上网搜索,谢谢!
阅读全文
0 0
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- Linq查询中类型的转化以及序列化XXX对象时检测到循环引用
- 序列化类型的对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用。
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为“×××的对象时检测到循环引用
- EntityFramework 序列化类型为XX的对象时检测到循环引用
- 序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循环引用
- 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。
- 序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- webservice中的序列化时 检测到对象的循环引用
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题(Newtonsoft.Json)
- EF生成的实体类.序列化循环引用的解决方法
- 当技术成为一种情怀
- Git的一些实用操作
- 优普丰敏捷学院Bill和Jacky的敏捷管理者领导力培训课程
- nginx配置以及说明
- php的变量类型
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- 类常量的访问
- 创建及删除索引
- IEnumerable和IEnumerator 详解【转载】
- Redis 关于大量1级key的测试
- 深度学习DeepLearning.ai系列课程学习总结:11. 优化算法理论讲解
- Safe-滑动页面(Setup2Activity)-手势识别器
- redis中的事务、lua脚本和管道的使用场景
- Masonry学习之设置新的约束