У меня есть несколько классов BusinessObject, которые ссылаются друг на друга, и мне нужно сериализовать их в JsonResponse и вернуть их в мое представление. Я продолжаю получать исключение для круговой ссылки, и я не могу избавиться от него. Я поместил декоратор [ScriptIgnore()]
на каждое свойство, которое не является простым свойством типа данных, и я все еще получаю исключение. Я не могу понять, где проблема, поскольку я блокирую сериализатор от всего примерно, и он все еще взрывается.Циркулярные ссылки и проблемы ScriptIgnore
Есть ли способ увидеть, что они представляют собой состояние сериализованного объекта?
[HttpPost]
public JsonResult GetAnalysisInfo(int id)
{
ProjectContext myDB = db;
SearchAnalysis searchanalysis = SearchAnalysis.Find(myDB, id);
//searchanalysis.Results = searchanalysis.SearchResultsPrototype(myDB);
return this.Json(searchanalysis);
}
Update
Я также попытался реализации ISerializable безрезультатно. Моя GetObjectData очень проста:
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("SearchAnalysisId", this.SearchAnalysisId);
info.AddValue("Created", this.Created);
}
По-прежнему возникает ошибка CircularRefernce. Типы данных DateTime не создают проблем с сериализацией?
Мои классы - сущности Entity Framework. Он имеет только пару простых сохраняемых свойств, кучу немаркированных свойств и довольно много статических методов и экземпляров. Определение класса слишком длинное, чтобы публиковать здесь. Объект Json фактически находится в обратной линии действия контроллера, и я разместил его выше. – CodeWarrior
Интересно, что после попытки внедрения ISerializable (и неудачи) я добавил декоратор атрибутов [Serializable]. Теперь все работает нормально (хотя свойства, которые я специально сериализую, не те, которые попадают в сериализованный объект ... Если я удалю ISerializable, это не сработает. Если я удалю [Serializable], это не сработает. – CodeWarrior
Вы когда-нибудь фигурировали почему «ScriptIgnore' не работал? У меня такая же проблема с моими подразделениями, которые разделены на отдельную библиотеку классов и пытаются сериализовать сущность из моего контроллера в моем веб-проекте. – bflemi3