首页 > 代码库 > 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
先看一个T4模板生成的model实体类
1 著作权归作者所有。 2 商业转载请联系作者获得授权,非商业转载请注明出处。 3 作者:卷猫 4 链接:http://anneke.cn/ArticleInfo/Detial/15 5 来源:Anneke.cn 6 7 //------------------------------------------------------------------------------ 8 // <auto-generated> 9 // 此代码已从模板生成。10 //11 // 手动更改此文件可能导致应用程序出现意外的行为。12 // 如果重新生成代码,将覆盖对此文件的手动更改。13 // </auto-generated>14 //------------------------------------------------------------------------------15 16 namespace MyBlog.Model17 {18 using Newtonsoft.Json;19 using System;20 using System.Collections.Generic;21 22 public partial class ArticleType23 {24 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]25 public ArticleType()26 {27 this.ArticleInfo = new HashSet<ArticleInfo>();28 }29 30 public int Id { get; set; }31 public string Title { get; set; }32 public int ParentId { get; set; }33 34 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]35 [JsonIgnore]36 public virtual ICollection<ArticleInfo> ArticleInfo { get; set; }37 }38 }
这是一个文章分类实体,与文章实体,是一对多的关系(一个分类下可以有很多篇文章,而一个文章只有一个分类)
这里有一个导航属性,我们控制器里将该对象序列化成json字符串的时候,会引起循环引用的问题。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:卷猫链接:http://anneke.cn/ArticleInfo/Detial/15来源:Anneke.cnpublic virtual ICollection<ArticleInfo> ArticleInfo { get; set; }
解决方法:我们使用Json.NET - Newtonsoft来进行序列化 首先为该导航属性加一个特性,该特性表示序列化的时候会忽略这个导航属性
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:卷猫链接:http://anneke.cn/ArticleInfo/Detial/15来源:Anneke.cn[JsonIgnore]public virtual ICollection<ArticleInfo> ArticleInfo { get; set; }
然后就可以进行序列化操作了
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:卷猫链接:http://anneke.cn/ArticleInfo/Detial/15来源:Anneke.cnstring json=JsonConvert.SerializeObject(articleType);
使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。