在ASP.NET Web API中序列化对象时检测到自引用循环

时间:2014-08-16 09:25:21

标签: c# json.net asp.net-web-api

我首先使用带有Entity Framework 6数据库的MVC 5 Web API,而我将我的对象序列化为JSON我遇到了自我引用循环的问题,我用Google搜索来识别问题,我找到了很多解决方案,所以我&# 39;我想知道什么是最好的模型?

我找到了:

  1. 使用[JsonIgnore]但我每次更新模型表格DB时都需要添加它
  2. 从集合中删除虚拟
  3. 创建新的数据传输对象层(DTO)
  4. 使用JsonSerializerSettings(因为它生成" $ id"," $ ref")

1 个答案:

答案 0 :(得分:0)

我想你知道答案是"它取决于"对?但是根据我的经验,我得出的结论是,我们最终会得到DTO层。它可用于解决此类无数问题,而其他解决方案仅解决此特定情况。在其他情况下,我们必须展平对象(Employee.CompanyName而不是Employee.Company.Name)和其他类似的问题。缺点是你不能直接从你的API中公开IQueryable,尽管我们做了一些翻译表达式树的工作。所以基本上我想这是一个关于你是否关心直接从服务中暴露的IQueryable的问题。