Json.Net将$id添加到EF对象,尽管将PreserveReferences Handling设置为“”;无”;

本文关键字:Handling PreserveReferences 设置 id Net 添加 Json 对象 EF | 更新日期: 2023-09-27 18:26:50

我已经研究了如何在JSON序列化期间删除$id,但给出的答案似乎对我不起作用,我希望有人能找出我做错了什么。

这是我的代码:

return JsonConvert.SerializeObject(target, new JsonSerializerSettings {
    NullValueHandling = NullValueHandling.Include,
    PreserveReferencesHandling = PreserveReferencesHandling.None,
    ContractResolver = new CustomContractResolver(),
    Converters = CustomConverters
});

它的输出仍然是$id,但是,仅在实体框架对象上,这是设计的吗?如果是这样,有什么方法可以防止实体框架对象上的$id?

Json.Net将$id添加到EF对象,尽管将PreserveReferences Handling设置为“”;无”;

自定义ContractResolver设置将覆盖PreserveReferencesHandling设置。

DefaultContractResolver/IContractResolver的实现中,添加此项;

public override JsonContract ResolveContract(Type type) {
    var contract = base.ResolveContract(type);
    contract.IsReference = false;
    return contract;
}

这与没有自定义ContractResolverPreserveReferencesHandling.None设置类似。