У меня возникают проблемы с круговой ссылкой, когда я пытаюсь сериализовать объект, возвращенный через EF4 CTP5. Я использую первый подход кода и простой poco для моей модели.
Я добавил атрибуты [ScriptIgnore] к любым свойствам, которые предоставляют обратные ссылки на объект, и досадно, что каждый из них работает нормально, если я вручную создаю экземпляр poco, т.е. они сериализуются в JSON в порядке, и признается атрибут scriptignore. Однако, когда я пытаюсь и сериализую объект, возвращенный из DAL, я получаю исключение циклической ссылки ". Циклическая ссылка была обнаружена при сериализации объекта типа" System.Data.Entity.DynamicProxies.xxxx "
Я попытался несколько способов получить данные, но все они застряли в этой ошибке:
public JsonResult GetTimeSlot(int id) {
TimeSlotDao tsDao = new TimeSlotDao();
TimeSlot ts = tsDao.GetById(id);
return Json(ts);
}
Приведенный ниже метод работает немного лучше, чем динамический прокси-объект с временным слотом, вызывающий круговую референцию его объекта назначения.
public JsonResult GetTimeSlot(int id) {
TimeSlotDao tsDao = new TimeSlotDao();
var ts = from t in tsDao.GetQueryable()
where t.Id == id
select new {t.Id, t.StartTime, t.Available, t.Appointment};
return Json(ts);
}
Любые идеи или решения этой проблемы?
Обновление Я бы предпочел использовать серийный сериализатор, если это возможно, хотя Json.Net через nuget в порядке как альтернатива, я бы надеялся, что его можно будет использовать, как я и предполагал...