序列化类型为XX的对象时检测到循环引用

  今天遇到的一个问题,请求一段数据,返回赋值给一个对象以后序列化失败,提示“序列化类型为XX的对象时检测到循环引用”。深入进去查看Model时,发现这个要被序列化的Model里面引用了另外一个Model,另外一个Model又引用了这个Model。

  我TM也是无语。事后排查是这两个表有外键关系,使用EF生成Model的时候,就会这样。

  这个问题解决起来也不复杂,循环引用的Model是无法序列化的,所以我们换个实体就可以了,你可以手动赋值给自定义的新实体,也可以通过属性映射,自动映射(如AutoMapper)。

  PS:外键确实可以保证数据的一致性,但是使用起来非常不便,尤其数据库迁移。数据的一致性通过代码一样可以实现,在使用数据库的时候,应当减少这些互相依赖性的东西,不然开发过程中各种掣肘,浪费时间。

     当然如果你是技术大牛,你觉得无所谓就无所谓好了。每个人看法不同,这里只是吐槽。

posted @ 2020-11-03 17:05  顾星河  阅读(290)  评论(0编辑  收藏  举报