【问题标题】:Self referencing loop detected when serializing objects in ASP.NET Web API在 ASP.NET Web API 中序列化对象时检测到自引用循环
【发布时间】:2014-08-16 09:25:20
【问题描述】:
当我将我的对象序列化为 JSON 时,我首先使用 MVC 5 Web API 和 Entity Framework 6 数据库有史以来最好的模型是什么?
我找到了:
- 使用 [JsonIgnore] 但每次更新模型表单数据库时都需要添加它
- 从集合中删除虚拟
- 创建新的数据传输对象 (DTO) 层
- 使用 JsonSerializerSettings(不适用于我,因为它会生成“$id”、“$ref”)
【问题讨论】:
标签:
c#
json.net
asp.net-web-api
【解决方案1】:
我猜你知道答案是“视情况而定”对吧?然而,根据我的经验,我得出的结论是,我们通常会使用 DTO 层。它对于解决无数此类问题很有用,而其他解决方案仅解决此特定实例。在其他情况下,我们不得不扁平化对象(Employee.CompanyName 而不是 Employee.Company.Name)和其他类似问题。缺点是您不能直接从您的 API 中公开 IQueryable,尽管我们做了一些翻译表达式树的操作。所以基本上我想这是一个你是否关心直接从服务公开的 IQueryable 的问题。