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