c# asp.net json serialization json.net

c# - Excepción de "Autorreferencia de bucle detectado" con JSON.Net



asp.net serialization (1)

El significado del mensaje de error es que hay un bucle de auto referencia. Debe establecer el contexto db para que no desee obtener todas las entidades vinculadas cuando solicita algunas entidades. Se puede hacer agregando dos líneas al constructor de la clase DbContext para deshabilitar el bucle de auto referencia como se muestra a continuación:

public YourDbContext() : base("name = YourDbContext") { //add these lines in order to avoid from "Self referencing loop detected for ..." error this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false; }

Espero que esto ayude...

Tengo este código para enviar una lista de objetos de Route a mi vista (ASP.Net MVC):

public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); if (routes == null) { return this.AdvancedJsonResult(null, JsonRequestBehavior.AllowGet); } return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }

Pero obtengo una excepción aquí en mi clase AdvancedJsonResult :

if (Data != null) { var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; string result = JsonConvert.SerializeObject(this.Data, this.Formatting, settings); response.Write(result); }

He probado el truco "ReferenceLoopHanding.Ignore" que silencia la excepción, pero la lista aún no se pasa a la vista.

El código funciona cuando cambio las routes a un solo objeto en lugar de una lista, por lo que creo que al código simplemente no le gusta trabajar con una lista.

Soy nuevo en este proyecto, así que no estoy seguro de cómo solucionarlo y hacerlo feliz con el uso de una Lista ...

Editar: Aquí está el mensaje de excepción completo, que ocurre en la string result = JsonConvert... línea.

Bucle de referencia automática detectado con el tipo ''System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452''. Ruta ''rutas [0] .incomingLots [0] .partNumber.partType.partNumbers''.