首页 > 代码库 > 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。

在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。

 

本文出自:http://www.cnblogs.com/zhhh/archive/2011/04/06/2006868.html

 

在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型 的对象时检测到循环引用。

异常信息(部分):

System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 序列化类型 Web.DAL.Friends 的对象时检测到循环引用。

(后面略)

这个意思是使用Linq to SQL的时候,表和表之间有关联关系,在序列化这些相关的数据对象的时候,产生无限循环引用的现象。

这里我们可以通过配置DataContext文件来解决这个问题。

首先我们打开DataContext文件,在该文件的属性窗口中设置“序列化模式”属性为“单项”,如图所示

 

然后在DataContext文件的视图中选中表与表之间的关系,并设置该关系的属性。在“属性”窗口中设置“父属性”节点下的“访问权限”属性值为Internal即可,如图所示。