JSON序列化(ASP.Net Web API)由于自引用循环而失败(这是一个常见问题,原因:被请求的实体延迟加载子实体,并且每个子实体都有父实体的后引用).
我找到了解决办法,但对我没有帮助:
- 使用[JsonIgnore]忽略导航属性:
此解决方案有效,但不适用于我的情况.例如:要获取客户信息及其订单,我会在Order类中快速添加[JsonIgnore]到Customer属性,但是当我想获得订单信息以及客户详细信息时,因为客户属性上有[JsonIgnore] ,它不包括客户详细信息.
- 更改JSON.Net Serializer设置以保留引用:无法保留,因为我不需要循环引用数据.
- 在数据上下文中禁用代理创建并使用显式加载(这应该理想地解决问题):禁用代理创建会停止Lazy Loading并返回数据而不会出现错误,但是当我明确包含子实体时,我再次得到意外的自引用循环错误!该错误位于父实体的后引用级别.
任何经验都沿着同样的路线/建议?