Solución:
Cuando necesito serializar, generalmente proyecto en otros tipos. Esto elimina las referencias circulares, además de otros datos que no quiero serializar. Por ejemplo:
var q = (from c in Repository.Customers()
where c.Id == id
select new
{
Name = c.Name,
Orders = from o in C.Orders
select new
{
Date = o.Date
}
}).First();
return Json(q);
Cuando crea una asociación en el diseñador de modelos (haga clic con el botón derecho en agregar-> asociación), obtendrá una ventana emergente que se ve así:
Observe las casillas de verificación de la propiedad de navegación, puede deseleccionarlas si no desea que se generen. Para resolver su problema de referencia circular, asegúrese de que solo se marque uno o ninguno, no ambos.
Resolví este problema en EF 3.5 cambiando la propiedad de navegación del niño Getter de público a interno.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)