循环引用我有一个原因对象:EF4导致Web服务
public class Reason
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual Company Company {get;set;}
}
我使用实体框架4和公司是导航属性到公司。
我也使用web服务为了返回数据到客户端。
我有一个返回的原因Web方法:
[WebMethod]
public Reason[] GetCallReasons()
{
IReasonRepository rep =
ObjectFactory.GetInstance<IReasonRepository>();
return rep.GetReasonsList().ToArray();
}
因为EF4我得到下面的异常用于执行Web方法:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Reason_24A0E4BBE02EE6BC2CF30BB56CFCB670C7D9D96D03D40AF4D174B89C9D3C5537'
问题accurs因为EF4增加属性,不能被序列化:
为了解决这个问题,并消除错误,我可以通过不使其虚拟或通过删除导航本身来禁用导航属性TY。但我neet它,并希望使用延迟加载功能。
我也可以为Reason编写特定的序列化程序,但我有很多很多的类,我在我的web服务中使用并为它们编写序列化程序是很多工作。
我怎样才能解决这个例外?..
多么痛苦的做法。至少你可以做到。 – 2011-06-28 18:47:43