Json.Net agrega $ id a los objetos EF a pesar de establecer PreserveReferencesHandling en “Ninguno”

Ya he visto cómo eliminar $ id durante la serialización de JSON, pero las respuestas dadas no parecen funcionar para mí y espero que alguien pueda descubrir lo que estoy haciendo mal.

Aquí está mi código:

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

El resultado de esto sigue apareciendo con $ id, PERO, solo en los objetos de Entity Framework, ¿esto es por diseño? Si es así, ¿hay alguna manera de evitar esos $ id en los objetos de Entity Framework?

La configuración personalizada de ContractResolver anula la configuración PreserveReferencesHandling .

En su implementación de DefaultContractResolver / IContractResolver , agregue esto;

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

Esto se comporta de forma similar a la configuración PreserveReferencesHandling.None sin un ContractResolver personalizado.