Исключение «Исключительная привязка к реляционной ссылке» с JSON.Net

У меня есть этот бит кода для отправки объектов списка Route в мой вид (ASP.Net MVC):

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

Но я получаю исключение здесь в моем classе AdvancedJsonResult :

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

Я пробовал трюк «ReferenceLoopHanding.Ignore», который блокирует исключение, но этот список по-прежнему не передается в представление.

Код работает, когда я меняю routes на один объект вместо списка, поэтому я думаю, что код просто не нравится работать со списком.

Я новичок в этом проекте, поэтому не знаю, как исправить это и сделать его счастливым с помощью List …

Изменить: Вот полное сообщение об исключении, которое происходит на string result = JsonConvert... line.

Цикл саморегуляции, обнаруженный с типом «System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452». Path ‘[0] .incomingLots [0] .partNumber.partType.partNumbers’.

Смысл сообщения об ошибке заключается в том, что существует цикл саморегуляции. Вы должны установить контекст db, что вы не хотите получать все связанные объекты, когда вы запрашиваете некоторые объекты. Это можно сделать, добавив две строки в конструктор classа DbContext, чтобы отключить цикл саморегуляции, как показано ниже:

 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; } 

Надеюсь это поможет…

  • Как превратить объект C # в строку JSON в .NET?
  • Использование jQuery для захвата содержимого из iframe CKEditor
  • Json Сериализация Java, которая работает с GWT
  • Информация о сериализации типов кеша Json.NET?
  • Можно ли выполнять бинарную сериализацию .NET в случае, если у вас нет исходного кода classа?
  • Сериализация с Qt
  • Серийный цикл ActiveRecord с использованием JSON вместо YAML
  • В чем разница между привязкой лямбды и метода на уровне выполнения?
  • Сериализация нулевого значения в JSON.NET
  • Рекомендации по сериализации объектов в пользовательский строковый формат для использования в выходном файле
  • Специальная сериализация Jackson JSON для определенных полей
  • Давайте будем гением компьютера.