T4模板序列化Json循环序列问题

在便利导航属性的位置加上[JsonIgnore]特性标签,保存T4模板,那么在对应的模型属性就会自动生成[JsonIgnore]特性标签解决循环序列化问题

当时给用户分配角色的时候,角色分配上了,查询数据库也成功分配了,但是当退出该用户重新登录的时候发现报错了,登录不进去,最后使用一个从来没有分配过角色的用户登录进去,发现可以了。最后分析得出是因为用户<——>角色,两张表是多对多关系,当你为该用户完成分配角色的时候,这时候用户表的角色导航属性就有值,那当你退出重新登录以后,经过memcache校验需要把用户表这个模型对象userInfo序列化,这里就开始了循环引用问题:序列化userInfo,因为里面有roleInfo这个导航属性,然后接着序列化roleInfo,又因为userInfo与roleInfo是多对多关系,数据库会产生一个中间表存有userInfoID与roleInfoID,在EF里模型表现就是userInfo有一个导航属性roleInfo,这是一个集合,表示一个userInfo可以拥有多个roleInfo,同理,roleInfo里面也有一个导航属性userInfo,所以序列化roleInfo的时候又回来序列化userInfo,所以导致循环引用序列化问题。

并且把用到微软原生Json()序列化对象的地方都换成,Newtonsoft.Json这种开源序列化方法来完成

原文地址:https://www.cnblogs.com/BOSET/p/7027184.html