У меня возникают проблемы с циклической ссылкой, когда я пытаюсь сериализовать объект, возвращенный через 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 подходит в качестве альтернативы, я надеюсь, что его также можно использовать, как я предполагал...