学习 EF Code First+MVC 时遇到了在请求JsonResult时出现 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用 的异常,原因是实体之间有关联关系,在序列化这些相关的

数据对象的时候,产生无限循环引用的现象。

Example:

    public class CollegeInfoModel
{
public Guid CollegeId { get; set; }
[Display(Name = "学院")]
public string CollegeName { get; set; }
[JsonIgnore]
public virtual List<DepartmentInfoModel> Departments { get; set; }
} public class DepartmentInfoModel
{
public Guid DepartmentId { get; set; }
public string DepartmentName { get; set; }
public virtual CollegeInfoModel CollegeInfoObj { get; set; }
[JsonIgnore]
public virtual List<ClassInfoModel> Classinfos { get; set; }
}

CollegeInfoModel中有List<DepartmentInfoModel>,DepartmentInfoModel中有CollegeInfoModel。

1.最简单的解决方案:获取需要的字段

from c in stuCtx.CollegeInfoes where c.CollegeId == collegeId select new { c.CollegeId, c.CollegeName };

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

3.没有必要删除virtual关键字导航性能(这将使延迟加载的模型完全不可能)。这足以创建代理(以及禁用延迟加载)禁用代理扰乱序列一样:

Context.Configuration.ProxyCreationEnabled = false;

以上3种方案可以看  Xia.CJ 的博客。 参考

我的解决方案是自定义JsonResult来实现。

最新文章

  1. js基础总结
  2. Ionic – 强大的 HTML5 Mobile App 开发框架
  3. 在VS2013中强制IIS Express应用程序池使用经典模式
  4. [荐]Js apply()和call()方法详解 - http://www.w3cfuns.com/article-5596443-1-1.html
  5. 基础_ _返回键back
  6. 如何在VBA窗体中使用 DataGrid 控件?
  7. chrome浏览器下禁制 textarea改变大小; Jquery的textareaCounter插件控制textarea输入的字符数量
  8. Leetcode 210 Course Schedule II
  9. LINQ to XML(1)
  10. 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统
  11. Android自动化测试之monkeyrunner工具
  12. Linux新手命令
  13. ssm整合(基于xml配置方式)
  14. Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
  15. 20165237 2017-2018-2《Java程序设计》课程总结
  16. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
  17. Spring cloud Eureka错误锦集(一)
  18. ie 支持字体大小继承
  19. java知识整理
  20. html5 canvas 画图移动端出现锯齿毛边的解决方法

热门文章

  1. Log Parser 2.2 分析 IIS 日志
  2. 高德地图-搜索服务-POI搜索
  3. Java基础-服务器的发送和接收
  4. CRM/ERP 企业管理软件中常见的七种程序设计模式
  5. 伪静态下Post无法响应的问题
  6. 免费获取WP之类的开发者权限或免费使用Azure 2015-10-19
  7. SQL Server 自动增长过大
  8. webBrowser 加载网页
  9. 【开源】OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构
  10. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果