Circular reference exception in json serializer
我有一个循环对象引用,它阻止对象被序列化为JSON。我试图对导致问题的属性使用scriptIgnoreAttribute,但它似乎不起作用。我认为这是因为我在使用带有虚拟关键字的ef约定:
1 2 | [ScriptIgnore] public virtual SomeObject SomeObject { get; set; } |
这段关系的另一面看起来像这样
1 | public virtual ICollection<OtherObject> OtherObjects { get; set; } |
号
我没有其他映射。
我如何解决这个问题?
问题是每个
我建议创建一个只包含您需要的属性的ViewModel类。然后,将您的实体映射到ViewModel类。返回ViewModel类实例,而不是原始实体。
另一种选择是告诉JSON序列化程序停止序列化循环引用。不过,我更喜欢第一种方法。
您还可以通过删除
但实际上,我更喜欢ViewModel方法。我发现使用视图模型不仅解决了这个问题,而且还解决了其他问题。
我采取了忽略相关对象的方法。要做到这一点,您只需添加输入文本模板(.tt)文件。
这里是我之前的一部分文本模板
1 2 3 | #> <#=codeStringGenerator.NavigationProperty(navigationProperty)#> <# |
一旦我将代码插入到
1 2 | [ScriptIgnore(ApplyToOverrides = true)] public virtual ICollection<Currency> Currencies { get; set; } |
号
我还需要修改