У меня есть объект Reason:
public class Reason
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual Company Company {get;set;}
}
Я использую Entity Framework 4, и Company является свойством навигации для Company.
Я также использую веб-сервисы для возврата данных клиенту.
У меня есть веб-метод, который возвращает Причины:
[WebMethod]
public Reason[] GetCallReasons()
{
IReasonRepository rep =
ObjectFactory.GetInstance<IReasonRepository>();
return rep.GetReasonsList().ToArray();
}
Из-за ef4 я получаю следующее исключение для выполнения веб-метода:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Reason_24A0E4BBE02EE6BC2CF30BB56CFCB670C7D9D96D03D40AF4D174B89C9D3C5537'
Проблема возникает, потому что ef4 добавляет свойство, котороене может быть сериализовано:
Чтобы решить эту проблему и устранить ошибку, я могу отключить свойство навигации, не делая его виртуальным или удаляя свойство навигации.Но я использую его и хочу использовать функцию отложенной загрузки.
Я также могу написать специальный сериализатор для Reason, но у меня есть много классов, которые я использовал в своих веб-сервисах, и написать сериализатор для всех них:много работы.
Как я могу решить это исключение? ..