序列化类型的对象时检测到循环引用
来源:互联网 发布:java运维是做什么的 编辑:程序博客网 时间:2024/06/12 05:23
问题代码:
public ActionResult SelectAllForClasses()
{
var lists = db.OEE_Team.ToList();
var result = new { lists = db.OEE_Team };
return Json(result, JsonRequestBehavior.AllowGet);
}
运行后错误信息如下:
public ActionResult SelectAllForClasses()
{
var lists = db.OEE_Team.ToList();
var result = new { lists = db.OEE_Team };
return Json(result, JsonRequestBehavior.AllowGet);
}
运行后错误信息如下:
Server Error in '/' Application.
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.BaseUser_08FCB4D1A67AD4A15169A1228CF2AE9BD99F78546715A4E4AF5E8E73F3A36322'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.BaseUser_08FCB4D1A67AD4A15169A1228CF2AE9BD99F78546715A4E4AF5E8E73F3A36322'.
Source Error:
Exception Details: System.InvalidOperationException: A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.BaseUser_08FCB4D1A67AD4A15169A1228CF2AE9BD99F78546715A4E4AF5E8E73F3A36322'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
解决方案:
public ActionResult SelectAllForClasses()
{
var list = from tm in db.OEE_Team
select new
{
ID = tm.ID,
Name = tm.Name,
LeaderUserID = tm.LeaderUserID
};
var lists = from ea in list
select new
{
ID = ea.ID,
Name = ea.Name,
LeaderUserID = ea.LeaderUserID
};
return Json((lists).ToList(), JsonRequestBehavior.AllowGet);
}
问题原因:
select new
{
ID = ea.ID,
Name = ea.Name,
LeaderUserID = ea.LeaderUserID
};
return Json((lists).ToList(), JsonRequestBehavior.AllowGet);
}
问题原因:
这两个表有1对多的实体映射关系。在生成的实体模型中,他们是可以通过这个一对多的映射关系查找相互之间的数据的。在上面的第5行代码里面,这只是定义了一个Linq查询语句并且找出第一条数据,这是没有什么问题。在这个过程中,会自动查找与之有映射关系的数据。第9行代码是在MVC里面返回一个json对象的数据,在这个过程中将我们找到的这条数据进行序列化为json对象的一个过程。在这个过程的时候,由于这个对象有映射关系,那么它在序列化t_saleform对象的时候会序列化该对象的属性t_saleform_detail对象,而这个属性t_saleform_detail对象又有属性t_saleform对象对象,依次反复。就导致了这个问题的产生。
原理解释:
这个时候就不能直接序列化了,要重新定义一个实体,把表中的属性都放里面,序列化这个实体即可。 同时这样也符合ViewModel的独立性,不直接依赖与数据库实体。
阅读全文
0 0
- 序列化类型的对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用。
- Linq查询中类型的转化以及序列化XXX对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为“×××的对象时检测到循环引用
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- EntityFramework 序列化类型为XX的对象时检测到循环引用
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循环引用
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- 序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。
- webservice中的序列化时 检测到对象的循环引用
- 对象循环引用与序列化问题
- 序列化---对象引用的序列化
- Android
- 金蝶BOS,服务端执行SQL语句参考
- android_重力传感器(个人笔记)
- Java学习笔记(二十八):java获取路径的问题
- 弹性布局的兼容性
- 序列化类型的对象时检测到循环引用
- 方式程0day MS17-010远程溢出漏洞测试
- day03 java语言基础(运算符与选择结构)
- Unity入门之地形绘制
- javaweb项目高并发处理
- 自画像
- 【计算机视觉】从运动中恢复结构SfM模块安装
- 学习笔记:mybaits的环境搭建和增删改查操作
- 算法谜题123 荷兰国旗问题