У меня есть приложение MVC-3 (RC1), использующее Entity Framework 4.
Я хочу вернуть объект JSON из действия контроллера.На этот объект ссылаются другие объекты, которые, очевидно, возвращают ссылку.
Таким образом, я получаю следующую ошибку циклической ссылки:
Ошибка сервера в приложении '/'.
При сериализации объекта типа «Application.Models.ReferenceObject» была обнаружена циклическая ссылка.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.InvalidOperationException: при сериализации объекта типа 'Application.Models.ReferenceObject' обнаружена циклическая ссылка.
NB: Приложение & ReferenceObject , очевидно, является заменой действительного пространства имен / объекта.
Согласно Переполнение стека: исключение циклической ссылки при сериализации LINQ для классов SQL , это можно преодолеть с помощьюJSON.Net;однако я хотел бы избежать этого и вместо этого попытаться исключить неправильные ссылочные свойства из сериализуемого объекта.
Что я имею в виду?
Я хочу сделать что-то вроде этого:
IList<ReferenceObject> list = Repository.GetReferenceObjects();
return Json(list.**<method>**("ObjectsReferencingThis"));
, где **<method>**
- это некоторый метод, который противоположен методу ObjectQuery(Of T).Include
, а ObjectsReferencingThis
- это свойство, которое вызывает циклическую ссылку.
NB: Я не хочу удалять эти свойства или создавать POCO, поскольку это влияет только на сериализацию Json.
Кто-нибудь может помочь, пожалуйста?
:)