码迷,mamicode.com
首页 > Web开发 > 详细

使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题

时间:2016-09-02 20:17:27      阅读:557      评论:0      收藏:0      [点我收藏+]

标签:

先看一个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.Model
17 {
18     using Newtonsoft.Json;
19     using System;
20     using System.Collections.Generic;
21     
22     public partial class ArticleType
23     {
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.cn

public 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.cn

string json=JsonConvert.SerializeObject(articleType);

 

使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题

标签:

原文地址:http://www.cnblogs.com/zzqvq/p/5835403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!