在使用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即可,如图所示。